﻿<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Interactive BOM for Altium Designer</title>
  <style type="text/css">
:root {
  --pcb-edge-color: black;
  --pad-color: #878787;
  --pad-hole-color: #CCCCCC;
  --pad-color-highlight: #D04040;
  --pad-color-highlight-both: #D0D040;
  --pad-color-highlight-marked: #44a344;
  --pin1-outline-color: #ffb629;
  --pin1-outline-color-highlight: #ffb629;
  --pin1-outline-color-highlight-both: #fcbb39;
  --pin1-outline-color-highlight-marked: #fdbe41;
  --silkscreen-edge-color: #aa4;
  --silkscreen-polygon-color: #4aa;
  --silkscreen-text-color: #4aa;
  --fabrication-edge-color: #907651;
  --fabrication-polygon-color: #907651;
  --fabrication-text-color: #a27c24;
  --track-color: #def5f1;
  --track-color-highlight: #D04040;
  --zone-color: #def5f1;
  --zone-color-highlight: #d0404080;
}

html,
body {
  margin: 0px;
  height: 100%;
  font-family: Verdana, sans-serif;
}

.dark.topmostdiv {
  --pcb-edge-color: #eee;
  --pad-color: #808080;
  --pin1-outline-color: #ffa800;
  --pin1-outline-color-highlight: #ccff00;
  --track-color: #42524f;
  --zone-color: #42524f;
  background-color: #252c30;
  color: #eee;
}

button {
  background-color: #eee;
  border: 1px solid #888;
  color: black;
  height: 44px;
  width: 44px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 14px;
  font-weight: bolder;
}

.dark button {
  /* This will be inverted */
  background-color: #c3b7b5;
}

button.depressed {
  background-color: #0a0;
  color: white;
}

.dark button.depressed {
  /* This will be inverted */
  background-color: #b3b;
}

button:focus {
  outline: 0;
}

button#tb-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.32 290.12h5.82M1.32 291.45h5.82' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 292.5v4.23M.26 292.63H8.2' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='1.35' y='295.73'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
}

button#lr-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.06 290.12H3.7m-2.64 1.33H3.7m-2.64 1.32H3.7m-2.64 1.3H3.7m-2.64 1.33H3.7' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 288.8v7.94m0-4.11h3.96' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='5.11' y='291.96'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
}

button#bom-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)' fill='none' stroke='%23000' stroke-width='.4'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' stroke-linejoin='round'/%3E%3Cpath d='M1.59 290.12h5.29M1.59 291.45h5.33M1.59 292.75h5.33M1.59 294.09h5.33M1.59 295.41h5.33'/%3E%3C/g%3E%3C/svg%3E");
}

button#bom-grouped-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m4 0h5m4 0h3M6.1 22h3m3.9 0h5m4 0h4m-16-8h4m4 0h4'/%3E%3Cpath stroke-linecap='null' d='M5 17.5h22M5 26.6h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
}

button#bom-ungrouped-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m-4 8h3m-3 8h4'/%3E%3Cpath stroke-linecap='null' d='M5 13.5h22m-22 8h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
}

button#bom-netlist-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' stroke='%23000' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-width='2' d='M6 26l6-6v-8m13.8-6.3l-6 6v8'/%3E%3Ccircle cx='11.8' cy='9.5' r='2.8' stroke-width='2'/%3E%3Ccircle cx='19.8' cy='22.8' r='2.8' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E");
}

button#copy {
  background-image: url("data:image/svg+xml,%3Csvg height='48' viewBox='0 0 48 48' width='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h48v48h-48z' fill='none'/%3E%3Cpath d='M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z'/%3E%3C/svg%3E");
  background-position: 6px 6px;
  background-repeat: no-repeat;
  background-size: 26px 26px;
  border-radius: 6px;
  height: 40px;
  width: 40px;
  margin: 10px 5px;
}

button#copy:active {
  box-shadow: inset 0px 0px 5px #6c6c6c;
}

textarea.clipboard-temp {
  position: fixed;
  top: 0;
  left: 0;
  width: 2em;
  height: 2em;
  padding: 0;
  border: None;
  outline: None;
  box-shadow: None;
  background: transparent;
}

.left-most-button {
  border-right: 0;
  border-top-left-radius: 6px;
  border-bottom-left-radius: 6px;
}

.middle-button {
  border-right: 0;
}

.right-most-button {
  border-top-right-radius: 6px;
  border-bottom-right-radius: 6px;
}

.button-container {
  font-size: 0;
  margin: 10px 10px 10px 0px;
}

.dark .button-container {
  filter: invert(1);
}

.button-container button {
  background-size: 32px 32px;
  background-position: 5px 5px;
  background-repeat: no-repeat;
}

@media print {
  .hideonprint {
    display: none;
  }
}

canvas {
  cursor: crosshair;
}

canvas:active {
  cursor: grabbing;
}

.fileinfo {
  width: 100%;
  max-width: 1000px;
  border: none;
  padding: 5px;
}

.fileinfo .title {
  font-size: 20pt;
  font-weight: bold;
}

.fileinfo td {
  overflow: hidden;
  white-space: nowrap;
  max-width: 1px;
  width: 50%;
  text-overflow: ellipsis;
}

.bom {
  border-collapse: collapse;
  font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
  font-size: 10pt;
  table-layout: fixed;
  width: 100%;
  margin-top: 1px;
  position: relative;
}

.bom th,
.bom td {
  border: 1px solid black;
  padding: 5px;
  word-wrap: break-word;
  text-align: center;
  position: relative;
}

.dark .bom th,
.dark .bom td {
  border: 1px solid #777;
}

.bom th {
  background-color: #CCCCCC;
  background-clip: padding-box;
}

.dark .bom th {
  background-color: #3b4749;
}

.bom tr.highlighted:nth-child(n) {
  background-color: #cfc;
}

.dark .bom tr.highlighted:nth-child(n) {
  background-color: #226022;
}

.bom tr:nth-child(even) {
  background-color: #f2f2f2;
}

.dark .bom tr:nth-child(even) {
  background-color: #313b40;
}

.bom tr.checked {
  color: #1cb53d;
}

.dark .bom tr.checked {
  color: #2cce54;
}

.bom tr {
  transition: background-color 0.2s;
}

.bom .numCol {
  width: 5%;
}

.bom .references {
  width: 10%;
}

.bom .quantity {
  width: 10%;
}

.bom th .sortmark {
  position: absolute;
  right: 1px;
  top: 1px;
  margin-top: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: transparent transparent #221 transparent;
  transform-origin: 50% 85%;
  transition: opacity 0.2s, transform 0.4s;
}

.dark .bom th .sortmark {
  filter: invert(1);
}

.bom th .sortmark.none {
  opacity: 0;
}

.bom th .sortmark.desc {
  transform: rotate(180deg);
}

.bom th:hover .sortmark.none {
  opacity: 0.5;
}

.bom .bom-checkbox {
  width: 30px;
  position: relative;
  user-select: none;
  -moz-user-select: none;
}

.bom .bom-checkbox:before {
  content: "";
  position: absolute;
  border-width: 15px;
  border-style: solid;
  border-color: #51829f transparent transparent transparent;
  visibility: hidden;
  top: -15px;
}

.bom .bom-checkbox:after {
  content: "Double click to set/unset all";
  position: absolute;
  color: white;
  top: -35px;
  left: -26px;
  background: #51829f;
  padding: 5px 15px;
  border-radius: 8px;
  white-space: nowrap;
  visibility: hidden;
}

.bom .bom-checkbox:hover:before,
.bom .bom-checkbox:hover:after {
  visibility: visible;
  transition: visibility 0.2s linear 1s;
}

.split {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  overflow-y: auto;
  overflow-x: hidden;
  background-color: inherit;
}

.split.split-horizontal,
.gutter.gutter-horizontal {
  height: 100%;
  float: left;
}

.gutter {
  background-color: #ddd;
  background-repeat: no-repeat;
  background-position: 50%;
  transition: background-color 0.3s;
}

.dark .gutter {
  background-color: #777;
}

.gutter.gutter-horizontal {
  background-image: url('');
  cursor: ew-resize;
  width: 5px;
}

.gutter.gutter-vertical {
  background-image: url('');
  cursor: ns-resize;
  height: 5px;
}

.searchbox {
  float: left;
  height: 40px;
  margin: 10px 5px;
  padding: 12px 32px;
  font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
  font-size: 18px;
  box-sizing: border-box;
  border: 1px solid #888;
  border-radius: 6px;
  outline: none;
  background-color: #eee;
  transition: background-color 0.2s, border 0.2s;
  background-image: url('');
  background-position: 10px 10px;
  background-repeat: no-repeat;
}

.dark .searchbox {
  background-color: #111;
  color: #eee;
}

.searchbox::placeholder {
  color: #ccc;
}

.dark .searchbox::placeholder {
  color: #666;
}

.filter {
  width: calc(60% - 64px);
}

.reflookup {
  width: calc(40% - 10px);
}

input[type=text]:focus {
  background-color: white;
  border: 1px solid #333;
}

.dark input[type=text]:focus {
  background-color: #333;
  border: 1px solid #ccc;
}

mark.highlight {
  background-color: #5050ff;
  color: #fff;
  padding: 2px;
  border-radius: 6px;
}

.dark mark.highlight {
  background-color: #76a6da;
  color: #111;
}

.menubtn {
  background-color: white;
  border: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 20 20'%3E%3Cpath fill='none' d='M0 0h20v20H0V0z'/%3E%3Cpath d='M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z'/%3E%3C/svg%3E%0A");
  background-position: center;
  background-repeat: no-repeat;
}

.statsbtn {
  background-color: white;
  border: none;
  background-image: url("data:image/svg+xml,%3Csvg width='36' height='36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6h28v24H4V6zm0 8h28v8H4m9-16v24h10V5.8' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E");
  background-position: center;
  background-repeat: no-repeat;
}

.iobtn {
  background-color: white;
  border: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M3 33v-7l6.8-7h16.5l6.7 7v7H3zM3.2 26H33M21 9l5-5.9 5 6h-2.5V15h-5V9H21zm-4.9 0l-5 6-5-6h2.5V3h5v6h2.5z'/%3E%3Cpath fill='none' stroke='%23000' d='M6.1 29.5H10'/%3E%3C/svg%3E");
  background-position: center;
  background-repeat: no-repeat;
}

.visbtn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='none' stroke='%23333' d='M2.5 4.5h5v15h-5zM9.5 4.5h5v15h-5zM16.5 4.5h5v15h-5z'/%3E%3C/svg%3E");
  background-position: center;
  background-repeat: no-repeat;
  padding: 15px;
}

#vismenu-content {
  left: 0px;
  font-family: Verdana, sans-serif;
}

.dark .statsbtn,
.dark .savebtn,
.dark .menubtn,
.dark .iobtn,
.dark .visbtn {
  filter: invert(1);
}

.flexbox {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
}

.savebtn {
  background-color: #d6d6d6;
  width: auto;
  height: 30px;
  flex-grow: 1;
  margin: 5px;
  border-radius: 4px;
}

.savebtn:active {
  background-color: #0a0;
  color: white;
}

.dark .savebtn:active {
  /* This will be inverted */
  background-color: #b3b;
}

.stats {
  border-collapse: collapse;
  font-size: 12pt;
  table-layout: fixed;
  width: 100%;
  min-width: 450px;
}

.dark .stats td {
  border: 1px solid #bbb;
}

.stats td {
  border: 1px solid black;
  padding: 5px;
  word-wrap: break-word;
  text-align: center;
  position: relative;
}

#checkbox-stats div {
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

#checkbox-stats .bar {
  background-color: rgba(28, 251, 0, 0.6);
}

.menu {
  position: relative;
  display: inline-block;
  margin: 10px 10px 10px 0px;
}

.menu-content {
  font-size: 12pt !important;
  text-align: left !important;
  font-weight: normal !important;
  display: none;
  position: absolute;
  background-color: white;
  right: 0;
  min-width: 300px;
  box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
  z-index: 100;
  padding: 8px;
}

.dark .menu-content {
  background-color: #111;
}

.menu:hover .menu-content {
  display: block;
}

.menu:hover .menubtn,
.menu:hover .iobtn,
.menu:hover .statsbtn {
  background-color: #eee;
}

.menu-label {
  display: inline-block;
  padding: 8px;
  border: 1px solid #ccc;
  border-top: 0;
  width: calc(100% - 18px);
}

.menu-label-top {
  border-top: 1px solid #ccc;
}

.menu-textbox {
  float: left;
  height: 24px;
  margin: 10px 5px;
  padding: 5px 5px;
  font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
  font-size: 14px;
  box-sizing: border-box;
  border: 1px solid #888;
  border-radius: 4px;
  outline: none;
  background-color: #eee;
  transition: background-color 0.2s, border 0.2s;
  width: calc(100% - 10px);
}

.menu-textbox.invalid,
.dark .menu-textbox.invalid {
  color: red;
}

.dark .menu-textbox {
  background-color: #222;
  color: #eee;
}

.radio-container {
  margin: 4px;
}

.topmostdiv {
  width: 100%;
  height: 100%;
  background-color: white;
  transition: background-color 0.3s;
}

#top {
  height: 78px;
  border-bottom: 2px solid black;
}

.dark #top {
  border-bottom: 2px solid #ccc;
}

#dbg {
  display: block;
}

::-webkit-scrollbar {
  width: 8px;
}

::-webkit-scrollbar-track {
  background: #aaa;
}

::-webkit-scrollbar-thumb {
  background: #666;
  border-radius: 3px;
}

::-webkit-scrollbar-thumb:hover {
  background: #555;
}

.slider {
  -webkit-appearance: none;
  width: 100%;
  margin: 3px 0;
  padding: 0;
  outline: none;
  opacity: 0.7;
  -webkit-transition: .2s;
  transition: opacity .2s;
  border-radius: 3px;
}

.slider:hover {
  opacity: 1;
}

.slider:focus {
  outline: none;
}

.slider::-webkit-slider-runnable-track {
  -webkit-appearance: none;
  width: 100%;
  height: 8px;
  background: #d3d3d3;
  border-radius: 3px;
  border: none;
}

.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: #0a0;
  cursor: pointer;
  margin-top: -4px;
}

.dark .slider::-webkit-slider-thumb {
  background: #3d3;
}

.slider::-moz-range-thumb {
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: #0a0;
  cursor: pointer;
}

.slider::-moz-range-track {
  height: 8px;
  background: #d3d3d3;
  border-radius: 3px;
}

.dark .slider::-moz-range-thumb {
  background: #3d3;
}

.slider::-ms-track {
  width: 100%;
  height: 8px;
  border-width: 3px 0;
  background: transparent;
  border-color: transparent;
  color: transparent;
  transition: opacity .2s;
}

.slider::-ms-fill-lower {
  background: #d3d3d3;
  border: none;
  border-radius: 3px;
}

.slider::-ms-fill-upper {
  background: #d3d3d3;
  border: none;
  border-radius: 3px;
}

.slider::-ms-thumb {
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: #0a0;
  cursor: pointer;
  margin: 0;
}

.shameless-plug {
  font-size: 0.8em;
  text-align: center;
  display: block;
}

a {
  color: #0278a4;
}

.dark a {
  color: #00b9fd;
}

#frontcanvas,
#backcanvas {
  touch-action: none;
}

.placeholder {
  border: 1px dashed #9f9fda !important;
  background-color: #edf2f7 !important;
}

.dragging {
  z-index: 999;
}

.dark .dragging>table>tbody>tr {
  background-color: #252c30;
}

.dark .placeholder {
  filter: invert(1);
}

.column-spacer {
  top: 0;
  left: 0;
  width: calc(100% - 4px);
  position: absolute;
  cursor: pointer;
  user-select: none;
  height: 100%;
}

.column-width-handle {
  top: 0;
  right: 0;
  width: 4px;
  position: absolute;
  cursor: col-resize;
  user-select: none;
  height: 100%;
}

.column-width-handle:hover {
  background-color: #4f99bd;
}

:root {
}
.dark.topmostdiv {
}

  </style>
  <script type="text/javascript" >
///////////////////////////////////////////////
/*
  Split.js - v1.3.5
  MIT License
  https://github.com/nathancahill/Split.js
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Split=t()}(this,function(){"use strict";var e=window,t=e.document,n="addEventListener",i="removeEventListener",r="getBoundingClientRect",s=function(){return!1},o=e.attachEvent&&!e[n],a=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",l=function(e){return"string"==typeof e||e instanceof String?t.querySelector(e):e};return function(u,c){function z(e,t,n){var i=A(y,t,n);Object.keys(i).forEach(function(t){return e.style[t]=i[t]})}function h(e,t){var n=B(y,t);Object.keys(n).forEach(function(t){return e.style[t]=n[t]})}function f(e){var t=E[this.a],n=E[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,z(t.element,t.size,this.aGutterSize),z(n.element,n.size,this.bGutterSize)}function m(e){var t;this.dragging&&((t="touches"in e?e.touches[0][b]-this.start:e[b]-this.start)<=E[this.a].minSize+M+this.aGutterSize?t=E[this.a].minSize+this.aGutterSize:t>=this.size-(E[this.b].minSize+M+this.bGutterSize)&&(t=this.size-(E[this.b].minSize+this.bGutterSize)),f.call(this,t),c.onDrag&&c.onDrag())}function g(){var e=E[this.a].element,t=E[this.b].element;this.size=e[r]()[y]+t[r]()[y]+this.aGutterSize+this.bGutterSize,this.start=e[r]()[G]}function d(){var t=this,n=E[t.a].element,r=E[t.b].element;t.dragging&&c.onDrag&&c.onDrag(),t.dragging=!1,e[i]("mouseup",t.stop),e[i]("touchend",t.stop),e[i]("touchcancel",t.stop),t.parent[i]("mousemove",t.move),t.parent[i]("touchmove",t.move),delete t.stop,delete t.move,n[i]("selectstart",s),n[i]("dragstart",s),r[i]("selectstart",s),r[i]("dragstart",s),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",t.gutter.style.cursor="",t.parent.style.cursor=""}function S(t){var i=this,r=E[i.a].element,o=E[i.b].element;!i.dragging&&c.onDragStart&&c.onDragStart(),t.preventDefault(),i.dragging=!0,i.move=m.bind(i),i.stop=d.bind(i),e[n]("mouseup",i.stop),e[n]("touchend",i.stop),e[n]("touchcancel",i.stop),i.parent[n]("mousemove",i.move),i.parent[n]("touchmove",i.move),r[n]("selectstart",s),r[n]("dragstart",s),o[n]("selectstart",s),o[n]("dragstart",s),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",o.style.pointerEvents="none",i.gutter.style.cursor=j,i.parent.style.cursor=j,g.call(i)}function v(e){e.forEach(function(t,n){if(n>0){var i=F[n-1],r=E[i.a],s=E[i.b];r.size=e[n-1],s.size=t,z(r.element,r.size,i.aGutterSize),z(s.element,s.size,i.bGutterSize)}})}function p(){F.forEach(function(e){e.parent.removeChild(e.gutter),E[e.a].element.style[y]="",E[e.b].element.style[y]=""})}void 0===c&&(c={});var y,b,G,E,w=l(u[0]).parentNode,D=e.getComputedStyle(w).flexDirection,U=c.sizes||u.map(function(){return 100/u.length}),k=void 0!==c.minSize?c.minSize:100,x=Array.isArray(k)?k:u.map(function(){return k}),L=void 0!==c.gutterSize?c.gutterSize:10,M=void 0!==c.snapOffset?c.snapOffset:30,O=c.direction||"horizontal",j=c.cursor||("horizontal"===O?"ew-resize":"ns-resize"),C=c.gutter||function(e,n){var i=t.createElement("div");return i.className="gutter gutter-"+n,i},A=c.elementStyle||function(e,t,n){var i={};return"string"==typeof t||t instanceof String?i[e]=t:i[e]=o?t+"%":a+"("+t+"% - "+n+"px)",i},B=c.gutterStyle||function(e,t){return n={},n[e]=t+"px",n;var n};"horizontal"===O?(y="width","clientWidth",b="clientX",G="left","paddingLeft"):"vertical"===O&&(y="height","clientHeight",b="clientY",G="top","paddingTop");var F=[];return E=u.map(function(e,t){var i,s={element:l(e),size:U[t],minSize:x[t]};if(t>0&&(i={a:t-1,b:t,dragging:!1,isFirst:1===t,isLast:t===u.length-1,direction:O,parent:w},i.aGutterSize=L,i.bGutterSize=L,i.isFirst&&(i.aGutterSize=L/2),i.isLast&&(i.bGutterSize=L/2),"row-reverse"===D||"column-reverse"===D)){var a=i.a;i.a=i.b,i.b=a}if(!o&&t>0){var c=C(t,O);h(c,L),c[n]("mousedown",S.bind(i)),c[n]("touchstart",S.bind(i)),w.insertBefore(c,s.element),i.gutter=c}0===t||t===u.length-1?z(s.element,s.size,L/2):z(s.element,s.size,L);var f=s.element[r]()[y];return f<s.minSize&&(s.minSize=f),t>0&&F.push(i),s}),o?{setSizes:v,destroy:p}:{setSizes:v,getSizes:function(){return E.map(function(e){return e.size})},collapse:function(e){if(e===F.length){var t=F[e-1];g.call(t),o||f.call(t,t.size-t.bGutterSize)}else{var n=F[e];g.call(n),o||f.call(n,n.aGutterSize)}},destroy:p}}});

///////////////////////////////////////////////

///////////////////////////////////////////////
// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>
// This work is free. You can redistribute it and/or modify it
// under the terms of the WTFPL, Version 2
// For more information see LICENSE.txt or http://www.wtfpl.net/
//
// For more information, the home page:
// http://pieroxy.net/blog/pages/lz-string/testing.html
//
// LZ-based compression algorithm, version 1.4.4
var LZString=function(){var o=String.fromCharCode,i={};var n={decompressFromBase64:function(o){return null==o?"":""==o?null:n._decompress(o.length,32,function(n){return function(o,n){if(!i[o]){i[o]={};for(var t=0;t<o.length;t++)i[o][o.charAt(t)]=t}return i[o][n]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o.charAt(n))})},_decompress:function(i,n,t){var r,e,a,s,p,u,l,f=[],c=4,d=4,h=3,v="",g=[],m={val:t(0),position:n,index:1};for(r=0;r<3;r+=1)f[r]=r;for(a=0,p=Math.pow(2,2),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 2:return""}for(f[3]=l,e=l,g.push(l);;){if(m.index>i)return"";for(a=0,p=Math.pow(2,h),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(l=a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 2:return g.join("")}if(0==c&&(c=Math.pow(2,h),h++),f[l])v=f[l];else{if(l!==d)return null;v=e+e.charAt(0)}g.push(v),f[d++]=e+v.charAt(0),e=v,0==--c&&(c=Math.pow(2,h),h++)}}};return n}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString});
///////////////////////////////////////////////

///////////////////////////////////////////////
/*!
 * PEP v0.4.3 | https://github.com/jquery/PEP
 * Copyright jQuery Foundation and other contributors | http://jquery.org/license
 */
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.PointerEventsPolyfill=b()}(this,function(){"use strict";function a(a,b){b=b||Object.create(null);var c=document.createEvent("Event");c.initEvent(a,b.bubbles||!1,b.cancelable||!1);
for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0;
var f=0;return f=b.pressure&&c.buttons?b.pressure:c.buttons?.5:0,c.x=c.clientX,c.y=c.clientY,c.pointerId=b.pointerId||0,c.width=b.width||0,c.height=b.height||0,c.pressure=f,c.tiltX=b.tiltX||0,c.tiltY=b.tiltY||0,c.twist=b.twist||0,c.tangentialPressure=b.tangentialPressure||0,c.pointerType=b.pointerType||"",c.hwTimestamp=b.hwTimestamp||0,c.isPrimary=b.isPrimary||!1,c}function b(){this.array=[],this.size=0}function c(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),A&&(this.observer=new A(this.mutationWatcher.bind(this)))}function d(a){return"body /shadow-deep/ "+e(a)}function e(a){return'[touch-action="'+a+'"]'}function f(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; }"}function g(){if(F){D.forEach(function(a){String(a)===a?(E+=e(a)+f(a)+"\n",G&&(E+=d(a)+f(a)+"\n")):(E+=a.selectors.map(e)+f(a.rule)+"\n",G&&(E+=a.selectors.map(d)+f(a.rule)+"\n"))});var a=document.createElement("style");a.textContent=E,document.head.appendChild(a)}}function h(){if(!window.PointerEvent){if(window.PointerEvent=a,window.navigator.msPointerEnabled){var b=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:b,enumerable:!0}),u.registerSource("ms",_)}else Object.defineProperty(window.navigator,"maxTouchPoints",{value:0,enumerable:!0}),u.registerSource("mouse",N),void 0!==window.ontouchstart&&u.registerSource("touch",V);u.register(document)}}function i(a){if(!u.pointermap.has(a)){var b=new Error("InvalidPointerId");throw b.name="InvalidPointerId",b}}function j(a){for(var b=a.parentNode;b&&b!==a.ownerDocument;)b=b.parentNode;if(!b){var c=new Error("InvalidStateError");throw c.name="InvalidStateError",c}}function k(a){var b=u.pointermap.get(a);return 0!==b.buttons}function l(){window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:W},releasePointerCapture:{value:X},hasPointerCapture:{value:Y}})}
var m=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],n=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],o=window.Map&&window.Map.prototype.forEach,p=o?Map:b;b.prototype={set:function(a,b){return void 0===b?this["delete"](a):(this.has(a)||this.size++,void(this.array[a]=b))},has:function(a){return void 0!==this.array[a]},"delete":function(a){this.has(a)&&(delete this.array[a],this.size--)},get:function(a){return this.array[a]},clear:function(){this.array.length=0,this.size=0},forEach:function(a,b){return this.array.forEach(function(c,d){a.call(b,c,d,this)},this)}};var q=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp"],r=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0],s={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},t="undefined"!=typeof SVGElementInstance,u={pointermap:new p,eventMap:Object.create(null),captureInfo:Object.create(null),eventSources:Object.create(null),eventSourceList:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
b.unregister.call(b,a)},contains:function(a,b){try{return a.contains(b)}catch(c){return!1}},down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.propagate(a,this.leave,!1)},enterOver:function(a){this.over(a),this.propagate(a,this.enter,!0)},eventHandler:function(a){if(!a._handledByPE){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),a._handledByPE=!0}},listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(b,c){this.captureInfo[c.pointerId]&&(c.relatedTarget=null);var d=new a(b,c);return c.preventDefault&&(d.preventDefault=c.preventDefault),d._target=d._target||c.target,d},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var b,c=Object.create(null),d=0;d<q.length;d++)b=q[d],c[b]=a[b]||r[d],!t||"target"!==b&&"relatedTarget"!==b||c[b]instanceof SVGElementInstance&&(c[b]=c[b].correspondingUseElement);return a.preventDefault&&(c.preventDefault=function(){a.preventDefault()}),c},getTarget:function(a){var b=this.captureInfo[a.pointerId];return b?a._target!==b&&a.type in s?void 0:b:a._target},propagate:function(a,b,c){for(var d=a.target,e=[];d!==document&&!d.contains(a.relatedTarget);) if(e.push(d),d=d.parentNode,!d)return;c&&e.reverse(),e.forEach(function(c){a.target=c,b.call(this,a)},this)},setCapture:function(b,c,d){this.captureInfo[b]&&this.releaseCapture(b,d),this.captureInfo[b]=c,this.implicitRelease=this.releaseCapture.bind(this,b,d),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease);var e=new a("gotpointercapture");e.pointerId=b,e._target=c,d||this.asyncDispatchEvent(e)},releaseCapture:function(b,c){var d=this.captureInfo[b];if(d){this.captureInfo[b]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease);var e=new a("lostpointercapture");e.pointerId=b,e._target=d,c||this.asyncDispatchEvent(e)}},dispatchEvent:/*scope.external.dispatchEvent || */function(a){var b=this.getTarget(a);if(b)return b.dispatchEvent(a)},asyncDispatchEvent:function(a){requestAnimationFrame(this.dispatchEvent.bind(this,a))}};u.boundHandler=u.eventHandler.bind(u);var v={shadow:function(a){if(a)return a.shadowRoot||a.webkitShadowRoot},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);if(this.canTarget(b))return b},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(e=this.targetingShadow(f);e;){if(d=e.elementFromPoint(b,c)){var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d} e=this.olderShadow(e)} return f}},owner:function(a){
for(var b=a;b.parentNode;)b=b.parentNode;
return b.nodeType!==Node.DOCUMENT_NODE&&b.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target);
return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}},w=Array.prototype.forEach.call.bind(Array.prototype.forEach),x=Array.prototype.map.call.bind(Array.prototype.map),y=Array.prototype.slice.call.bind(Array.prototype.slice),z=Array.prototype.filter.call.bind(Array.prototype.filter),A=window.MutationObserver||window.WebKitMutationObserver,B="[touch-action]",C={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};c.prototype={watchSubtree:function(a){
//
this.observer&&v.canTarget(a)&&this.observer.observe(a,C)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){w(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(B):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(y(b))},
installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){
var b=x(a,this.findElements,this);
return b.push(z(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}};var D=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],E="",F=window.PointerEvent||window.MSPointerEvent,G=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,H=u.pointermap,I=25,J=[1,4,2,8,16],K=!1;try{K=1===new MouseEvent("test",{buttons:1}).buttons}catch(L){}
var M,N={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},lastTouches:[],
isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,d=a.clientX,e=a.clientY,f=0,g=c.length;f<g&&(b=c[f]);f++){
var h=Math.abs(d-b.x),i=Math.abs(e-b.y);if(h<=I&&i<=I)return!0}},prepareEvent:function(a){var b=u.cloneEvent(a),c=b.preventDefault;return b.preventDefault=function(){a.preventDefault(),c()},b.pointerId=this.POINTER_ID,b.isPrimary=!0,b.pointerType=this.POINTER_TYPE,b},prepareButtonsForMove:function(a,b){var c=H.get(this.POINTER_ID);
0!==b.which&&c?a.buttons=c.buttons:a.buttons=0,b.buttons=a.buttons},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);K||(c.buttons=J[c.button],b&&(c.buttons|=b.buttons),a.buttons=c.buttons),H.set(this.POINTER_ID,a),b&&0!==b.buttons?u.move(c):u.down(c)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.move(b)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);if(!K){var d=J[c.button];
c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a),
c.buttons&=~J[c.button],0===c.buttons?u.up(c):u.move(c)}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.enterOver(b)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,u.leaveOut(b)}},cancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.deactivateMouse()},deactivateMouse:function(){H["delete"](this.POINTER_ID)}},O=u.captureInfo,P=v.findTarget.bind(v),Q=v.allShadows.bind(v),R=u.pointermap,S=2500,T=200,U="touch-action",V={events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){M.enableOnSubtree(a)},unregister:function(){},elementAdded:function(a){var b=a.getAttribute(U),c=this.touchActionToScrollType(b);c&&(a._scrollType=c,u.listen(a,this.events),
Q(a).forEach(function(a){a._scrollType=c,u.listen(a,this.events)},this))},elementRemoved:function(a){a._scrollType=void 0,u.unlisten(a,this.events),
Q(a).forEach(function(a){a._scrollType=void 0,u.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(U),d=this.touchActionToScrollType(c),e=this.touchActionToScrollType(b);
d&&e?(a._scrollType=d,Q(a).forEach(function(a){a._scrollType=d},this)):e?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){
(0===R.size||1===R.size&&R.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,T)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return"touchstart"!==a&&"touchmove"!==a||(b=1),b},touchToPointer:function(a){var b=this.currentTouchEvent,c=u.cloneEvent(a),d=c.pointerId=a.identifier+2;c.target=O[d]||P(c),c.bubbles=!0,c.cancelable=!0,c.detail=this.clickCount,c.button=0,c.buttons=this.typeToButtons(b.type),c.width=2*(a.radiusX||a.webkitRadiusX||0),c.height=2*(a.radiusY||a.webkitRadiusY||0),c.pressure=a.force||a.webkitForce||.5,c.isPrimary=this.isPrimaryTouch(a),c.pointerType=this.POINTER_TYPE,
c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey;
var e=this;return c.preventDefault=function(){e.scrolling=!1,e.firstXY=null,b.preventDefault()},c},processTouches:function(a,b){var c=a.changedTouches;this.currentTouchEvent=a;for(var d,e=0;e<c.length;e++)d=c[e],b.call(this,this.touchToPointer(d))},
shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c)
b=!1;else if("XY"===c)
b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]);
b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;d<e&&(c=a[d]);d++)if(c.identifier===b)return!0},
vacuumTouches:function(a){var b=a.touches;
if(R.size>=b.length){var c=[];R.forEach(function(a,d){
if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(e)}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){R.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),u.enterOver(a),u.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,c=R.get(b.pointerId);
if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e,
d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):(
b.target=e,b.relatedTarget=null,this.cancelOut(b))),c.out=b,c.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(u.up(a),u.leaveOut(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){u.cancel(a),u.leaveOut(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){R["delete"](a.pointerId),this.removePrimaryPointer(a)},
dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0];
if(this.isPrimaryTouch(c)){
var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,b,d);setTimeout(e,S)}}};M=new c(V.elementAdded,V.elementRemoved,V.elementChanged,V);var W,X,Y,Z=u.pointermap,$=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,_={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var b=a;return $&&(b=u.cloneEvent(a),b.pointerType=this.POINTER_TYPES[a.pointerType]),b},cleanup:function(a){Z["delete"](a)},MSPointerDown:function(a){Z.set(a.pointerId,a);var b=this.prepareEvent(a);u.down(b)},MSPointerMove:function(a){var b=this.prepareEvent(a);u.move(b)},MSPointerUp:function(a){var b=this.prepareEvent(a);u.up(b),this.cleanup(a.pointerId)},MSPointerOut:function(a){var b=this.prepareEvent(a);u.leaveOut(b)},MSPointerOver:function(a){var b=this.prepareEvent(a);u.enterOver(b)},MSPointerCancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var b=u.makeEvent("lostpointercapture",a);u.dispatchEvent(b)},MSGotPointerCapture:function(a){var b=u.makeEvent("gotpointercapture",a);u.dispatchEvent(b)}},aa=window.navigator;aa.msPointerEnabled?(W=function(a){i(a),j(this),k(a)&&(u.setCapture(a,this,!0),this.msSetPointerCapture(a))},X=function(a){i(a),u.releaseCapture(a,!0),this.msReleasePointerCapture(a)}):(W=function(a){i(a),j(this),k(a)&&u.setCapture(a,this)},X=function(a){i(a),u.releaseCapture(a)}),Y=function(a){return!!u.captureInfo[a]},g(),h(),l();var ba={dispatcher:u,Installer:c,PointerEvent:a,PointerMap:p,targetFinding:v};return ba});

///////////////////////////////////////////////

///////////////////////////////////////////////
var config = {"bommode":"grouped","show_fabrication":false,"redraw_on_drag":true,"highlight_pin1":false,"fields":["References","Value","[Footprint]","Qty"],"hiddenColumns":[],"extra_fields":["[Footprint]"],"dark_mode":false,"bom_view":"left-right","board_rotation":0,"checkboxes":"Placed","show_silkscreen":true,"show_pads":true,"layer_view":"FB"};
///////////////////////////////////////////////

///////////////////////////////////////////////
var pcbdata = JSON.parse(LZString.decompressFromBase64('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sj+cJOG9tIML+A/0a7i2iJti6guzTsPaVYDTpxrqu85pK70uyjvTQudc9qq68CwjvNaWybpXX4JultpLaqO5TrQaNOWPS87osILSG6G8Q7pHbn26boobkjNTobwku29ny67up9uO7xysTqGZICu9ku6KYjzvWNiuh9tW6Hu19oraf2i7187KW99r/bxmT7rg6Ie6jqh7YIYULibAe9Hss5feeTsubousFoy5furbqvac2wbrX5xuqLt67LOyHqfrf2z9uM7osOwV8apOpHvY7jux7pAaeDPGgTwOujTl568e/1vu7vu3EKQ6tupEx26PW8Xq4ghOtLos6Yu2npy7Y8PEpw0yemVOFBhyNnrK6N237vC6W2Rnopi9eqcHvah20roy6TusXvV6k7NXsva7O5dpW75enXvPa9el2AN6/AIOjM7Be1duR6OexXpm6fO0jle7zWpzGFyDuqnqa6K+QLoobkOkLrQ6KYrzk977esHsd78ATnq2MJkWHCsCIGrYxdgEu6wK96zetbtcCkOpjugFdavdtL7ssouy17zezjuJ7B6zHrV7z+XHqT7Te8Ht97Ue9zplTBOm3oNZEe8Psm73GtPrQCPO6DrnanMPLoa6B+o7oialtFru2INcEHr57LOJfoL72+2foR15+iTqJEIO0+v56p+uXoJ7MuzxpA6Me6ASD7IGjTlFC1+lPo8bYjJ+u56WLLHs66n+nroj6Z/WZrR6CERW3Ho3e8diuxslW7un7hejfpg4SXL/o6YeO0LtPrIB6OkySb+o/sGLG2FrtgGb6eAb47v+njvQGa+ovrAGUBxOXHpmmmAYIHPzAqhwGOOs9n66nujTiC1n+ptgr8w+w/up7vDKJqe76B6Ogv6c+g5pxdQetvtv6RWVgZAbc+uAez6ruwmojY3+wfp60mRWmsc6PQuCCjarpVVtixJBmfumakgzdqs5Di/5vB9e2oVzB9fWh3sQH00Kgaar+7QExUHe267FrM9jVQZAH1B4MLE61cGNpKMse6HDeBm3cg1b7sO5gcJ7TByWmrDGoYKFobAh2r0KBSOowd8H8AXZzIanWg4uUHdBvjo1R9QAwbsGvuiJoLLUG/urVw49CwZ2IQhswji8xSCIeT7EBmIdO7shkoSKGx9KNtCGyDYKHIHju8oc0HWWbcMVtah3UQJNCUxoYyHYylBpaGyEiwcSGChs4SCH++pgff7cZPoc0a0e/SnIxX3Jk1oaPaBIcMHShqIZABMhgYf1Jx2WPzh7x0OLBStlutYcmHSQZobE6oG7cPqSkuhqCVgtJHofcbNh84bRgkjQ4Y66WyRrE1hVhvgbKG+h2Ia/79hwcLj6B6yZEBG0hn3t6H90QT3TaNUUYbCHCUlusZRXTBUBN6fBk4Z2dphrIeoHw2jVCIy4e7JnwQZRBAfWHHhkDu1ADh5EbeGNsghHz7vBhTrRHohjEZa7o+S4cl7I0qkfcgvh1EakHCqEkbfbERgkxFiOuskYFGURuke5GYyyEZmHZBpGHmHSOR/CjaZRthW06iR+kY2HGRpwZvY4vbUGvaV6nIeUGj24AfSGHh34YqGKG/SgchSOQzV7bNR191bjaR/HuJGTRzdtUttqVtKuHJWlozTchWe4euaxO1tI5ErW90YDq7BZNQJ8wR9ntAGM0T/uVaeDLNrMY+O/0YU03R0UYdHVRmZudHYxq1twaExzMaKKuK8Me17MunJtDbfmsgHULRCn5rOkyx6Og1d8WvKnX6GW1FpJbSxrlpvpaxysZ4M68aQhKH1q+sdv7GWrGpbHyxmkY+q4KgAdI4DRi5r7HEBgccsb+yWpM/MZCUcfdJFxnsb0rpx9YdnHomqsfWhbzZcZyIwy9XALHa+s9mjG5xg8b3HNavTUJqpwcYciG0x08Y7brx5tlvGHmuqC4ZTGb0cNHwRhwajGnxyiQ/GtqA3rqhz+UshTGheo0d9GSxyiVAnG0N8dYhwLUxh1Bjx3Ab/GPmyTIRkwJ+CYvFDx8pxQmKB53X/GcJzFtEG1oYidnAnO78YjHfx4sebGEJ6Bq8BAk7Cc1aG6/CZF7CJ9CYQntk7YyBHhxTMp4m2JyMdom0eviZrLM9Jmv5VQGwSZomzx/usxzTmiFHVb5JqFG6GqJwsaQHZJ5lskmqqGFtaF+I1+s161Jk8Y4n02m7P0nTGGroTHo+d1Wt6VR8UZqa/R6yahpLJlpohQEMQFomH7J3pudGtzaeN0mtatycxUjh74fWH0xv0d8nGJu3tcmGmo5Gr6jJyjr/Dc1UyYin4vLHq1FchyKciCfRgRX/CZBmOrDN5Br8yUnY8Qqelr4p59qwi/RkqahReDJmtnNZwMqc8m1BobEqnSRrLNeI5UjAa9doBTqeymNVc4ZVlslZrCwbdxz8w9d7RiCZ/GWypkfanncSkdGmd2ZrD6mzS1gy/6Zad6z/71ptmm4o7J5qcKpZbEDp1Uj0xrJbqtp08uhTdp+wemnzhoW3UsdRyBrOnocHaYmnve6ieunDpmVIkG4eo6faFDJpqaun9p1aafrD00wi0cMBkGc/NIu/6cgnswkDrlU7pjrohnTyqGfvGvJ39LhnxBhtvBnCaj2jXGxRvaZiMWuwK0LoCMjruJnbRzkfxmAZwmfOHyZ7afumtjRyPDi8Z1MbRnMuieiJniRLxmnhEZmVI9peBrkYJnP2cQ1pmuZtmh5m4ergycNlp7w38Gmez6axmW6lrgAYBZqmZhmxDOWYlqSBr3RC4maoYNKa/GmWcJ7EtUyf1m8xpZtoaqqRxsNnyp9iZM5NZ7wEeSrWyl1oanZlJqCtpJlqbLaS+7dojajSOdqA5C6ZCE9nCqFNp74J2tBvMogm2+jC7BhmxvqSjZ4/oq6IBufINmaG0+qjm05lmcmm3p09pa7AjL0b/6H9JMZXds516fUn1u5OcnbhQEudV77O7UXlBowROY8b1DGjt2ZmS6MCI7CaznhenC+gifN4Zp2EZsapO2Of4a8x1nttnIx/XSeGss4vSwah51SwnnoZqab11W5r/pXckx0oI66ruF326je5hsel0WuxlBKCcspWeS6d2jydRmhZjPhl1ZBxIyf0/+4+eZLKJ5edzncDQq3OGeDQukTNl+29h/nLp9WbqM8p+eq1xv+SIJbrQFz8wRbJ538fqMQOyBar6GZ6LC/mKe1WdZnr542eAWnuhBZyGgRghA8GvGK0f3n+B/DiwWue/nUIXhyFuvuwnSr9WIXjB0hedGH8I2wtnJWyVhFrvqgBZXmYlblz9GjLdwfm6PR7WYEWQ5nhZvhnR9hcCFSJkp1hcVq0RY+NeF0yf4XkPJSa4pC6LC0pn0F6mfRqhW5VpKFM++qGkXyXOF00Wc59Se4Q7mB2flBmLMhVUWk7aOkamr57RfxVLFphfsXbFjlv0Xo6eF3kWXF9Fz9GQ0BLvhHdR0p021TF8ufN6LF4lzcWbF0bLsXuIeYrLm+547qiXwB5VoiC9KUJU8WyAIJfCXkliJtSWJFh5ThxRnJIaWdBzXxfRHIRv4fSXuBwGWyXtqEpbyWD5nkadG+FxCZvUOWh/AZyGZSpYZHql00ZFbHalgKMXSnWPWaXb+3kZEnmFwWUdlsl3uRGW+ltUclHMRkVv4WVZOxYKrxOOZfoXHRlZZa69QD0NsG4emhbqTZepxcAWM+Mha2NqNLVrh7Dl6WZgXOda5eix3hwZENYsG8lC6GJln4YGX8BrZYXqOu+Lv4Slls4ZA7gV24aIHL+/OqU9gpwWecWql/GRqW0Gt5YsGPl4gYBWPup5daW/lm6ZxnlsbeZctjLO4exWPkSw3tYgZtBuG1X8nCW+miV/BfAmIlyjvJWWDFruG0bBrwdOn6Vuaa4W35iwypYrDB1ha7JWa9XEdBFj1tu0VJn5dCmRsNeafqRVvFjh6FVmRkLrdlh8c1Y5VyOfamvpjAckXMOtVbZnBirVl16/ueLC0ku53aFtHZW44cNWWV+lgM7LVpWDtGFujiitWllu1ZsN5VzGfRXIGxHhvR2Wg1YwX2ZzSZAa/V0agDWu5+JtYzL5m1aDWjVkNdBZSeRVek6k18NcZX8l9xo9WDOqNdnAVy8foxVIpvNcDWEV4NYM7ICqSfrny145eLXLlwnuNXz2xw1nBd+j1sbXXBpZZFYE1tALFI4senH8m/AVtaORKe1+YrmRsTtYpiZMZWWG7zW7YhpCOrXlfUmw5kNpo6Z1rMekXPW2dYDXm5xdYjn56neZYc95rld14X5i5e4W6jW+Z9q5q0NUQJWR+WYab5QXqdJXTuNlb+4xxcVa2Mfp7DWPXY1ktcGKq5tBrsFK1a9cJW82V9fbXjMP9eyH7sFtIC0o2qDfj0wZrdfHbNBueBbSMl2DYSx4N85e/Xa1ttqXWRJ/meZLwF3UZQ3CN61ZCnVR7dedGV3aNNSso2yRCKiY18jcNWw5tNriH6NiiL7XXiG4ds6PZ+dfN6WNndeZaeDPSkJGEx5WZSazhG1qqVXARAZ5LoRq/Q7mb10lsU95QIAb9bpN2/rk2nW1SxA2TKJTapbVjWzsk3BejTdk241P0YA2yHItdobBpl3yLXm5v4tMmb2VridsxNwzbHFGN+FZw38cQnGdGciH3jgmOW6jY42llgTYzGKF7CWM23Ntets6spx9bHb22pwds2WHazZCWbjZkuTya109b7VfNv0ec3oJVzaZr8tokVGwllxze03/NuJv03MtbQbhwlp+LYdafJwmtE2ma4TdLrwJ0zfWGtNkSZtEP7KLda2ItvrfTWWlj5Eo28t45EFkAYordC0StzzbVnstnoHK2RJmUaG66FvWd8qiRereHX+N72fG3ijC/jW3JWlbc/UsNpjbjWwt8KcJqvhJSdUo9Ka7b43KOpbZjHbs8Tim2jtibZg1TtrzYW3fi3LdMnbttfnNXJWoDlnWAYhzb+26JkUgv4lxq8YTkttUjhkJm54fALl/xzpSTlStysbR2WLO8ew2ftu6x5JHrKHuvH4dtjhh3EmrHegEMdrLb5X8VAnaj6Mq/su/5OppYZYzoBHZebmfu6EcZ22d/TaenMl73jA2wuTQe522OIhZZ3Xq7LIfXtt1CfPXsh8TZ3ZaNqwbs8i6Vd2bnTawQYCtjrbJUV2kh+Xeja5trRe831dzQfWNWuZ6dobNtLTuenEWw1eN32lu5p1Fzd3UdN3oJa3aUa+W23aVaL1l3ew0ndu2tcVC6C6gN2zF83rt3oRyFKGbONiPde3g9plefaw9uIej3/ozjbZsyMMje+2adwVoNbZB1PeNso2tm0zallhPdmHNYHpdKXaGm0ctG/pk9cz3+lpFcGWYXbF2WcFRrisFlSl5ubBW2N2RbKcjFzWG/nQHUFfVHw98IcWXrR2LAp6klkbamH9lpwZeK21IxbDBA9lYTK2Id2YcX2R1KNtbV26lffBFTJlxR8BeNhMc9HHdlMY92414vZz2MW33d53lhqzYN2z9n9Yv2Y6/feOslJlxXqX7Rh/aN2vduSbdbpMqFaFrEJ+LDinpd59oOntNiFVGo3tgOr/2oDr7fm3a9kAHAP15q/dRsAD+WZ/kW44bdv7kD4GcM6lYA9dPrrsPUuNRm53A//WPtpCf03XVEg4aGGt/AHIPd138ihoYiLlbzaVQRHfoOLe84cdLbRt9aG1mDpWE4PQDjvob3osFK1FXeGvfuxGLxdPYQP1JqZbp7Ewp1ekWR0QqaWZBdkzHv6UV7fsinoByBsRJGsRlGlXVRxg6e7DDrxleoTlyb1Gp8Ch7bAPKV+euS21ccaeoWbD/TMn2cDxw6e6TGNXGzH555BnjGkdmayIYXlhKjWsPDjroiPkh+A8N28djWlCPB5wI/8PT66I5MpPDxAYSPvjGjqu83Vudt0NdjLwebms1+vvP5aQ2tu73yj+w+O6xtvfZ0bOl6LZUd2d93Z1bz9n/ej7VKHnvU7zWwOZ/JkJ6o4iaLtzbtG6Be6Ts6PkQtBZD3KOoY7faC5ttesOGJ8dg0OBj38Y5nP5/FKWPqD0ZCRHlj6nZHXNWbQ/nrtjqb2oON5gky/Wztn9ZFZDjp7rOPZwXY7Pm2usIYuOM9/Y60OWu+Gb1V0DhKgZqWD2I6mOHDj49GS/j4DZYW5DuI8QOzDkBr3X9ewlfpqCVlY4pYBVilZN2MAued1Hr0d2ewOGF2kAg3o+qrp0211rbp7mOds9g130OnRvROpel9dzYTDw1f/RyT8I5hXS8vtYIQHdoZzQWNx1UeH6EqGUfLGbZJLpcHPOusc8pb+nk9ggZMa9RaRn+vk4M1OT0U8QHxT8diFOLu3+fZS1NxGq5PDVpU/GXS6vBd1PZtkU6n2FezvrO7LOVU7xHzTxgc1OFT9YfFPMqlg7cGm2DBsEauDp/acO45qtTh7UVlhxAO5WiuvUnxTv7o0rh/aTvcdTyv09JqtTuNe4RUq37vbn9VrufhPxpmWujOf12M7XNzh8dAy0oMoUdnnaNbVoDPQ99o4Z2NtlLdZPszu/cLP+xks+dg1XaAXyHJWnIi3pHF0mq/28d90+Za7BPGnoG7F2JbVwPrNXdrOcENRfetRl7vY0Wi94c7XFgTlVaoXJWoTRKFJjuPeO7OzkVubOHFtKZcVezvHvbPEDtc7gj9tpc+Kmvm62uXOM14Gqo36jjZaC36jkuCZMbdto90WY68lSCmlJ18+2h29t0+nP1s8cdMZ0BiSdnOBVOFfkPiz587kmNzhs/4P2RQK3LGHzlo6LPKOg85wRJa8ON4nIL7+TQW9z9SeQuYLr8yvk39u8+VHP91o8f2fziAoS7apyVu7PNzqc/AuzR8ylDUm6jrp/9oJNBSvrOt1Ue62n61i+w00FBEeUOP7ezYqbOLw1e4u0G3i6EvWTg/brxRjji4agzNrwSfqZLiY7zOrazTik2FLrrfM3oRmnHr43B67GvUE4avdx3ED4fCSm4hwy66j5z/3asvsJIheCPhcCy9mG7LnUTF3dRwuyTHmLxE4EURcbI5cvyHces327PL072PIlnNX8u75mHFUve2rfY/s4tkQ4ianti9biuduVVdobUr2PHBOAT47uSvKh9xY4loL6VJ/6iRDU9MvzF2dUiuL1xi433e2mq7uyMj9YeHw51TQbhatqTjeMOKXTRewvQ9psdmHOrtmhdm0t7Fyghur0i6N2+rwcYQm82nIcB6EwugnaEsL8a47PJrucbFXFr989vRr1TpViOerpC9Wu5Jjio+Dvj9bJPLocL895blr/c4Ou6mriZsmbawC7Ou2U6s5nGbrvZumv7rua7uuoaG2sfPH9t6/hNbjAFpu3QzGLGGa8etM+83uEKE3/G/msG/8m6oZh3hujTkhfBa/RyA/+bglmA9Bu1TVM9tPVR6G601/th5Q4OkF7Gu2o2WzRchv4j3IBhuqpgtbrMlJ+qc/Oqb/G8NXuEIRUJ3lW1hUvGA65m5eoQL/Stv6ObzM+gnHNRTWgvrxhk3E4otxy7JQqr7cYhp6Zfrdh2NJKSR8un1Im7omNJD4WAmEJjKYv5vJe0epvrrhl2gmdb2le/bxJAcomAcd3sbZvz9gG7hIoMpaStv6J9lKNu8b405NqnbtaELs7ty2+XGLbklanGHb/67Nu6J8W6GcbLuTSahAdlMZNucL32+vHatw0kluE5AcKr2Ub164juidlcfE5/Zt29v2nNFmcTver3O6muYzdlMbPEmqHeKHs7zceTv+yP84O307qu8/VS7sO4muK7ucfbuJx9O+2Iujwu69v+xpu8HvBZQu+XGodtO4bvVRrcduuodzpVInrxpAg+DNFsYBk3G7nu8VvBLtXB8XKxnVW2vrT0mo3vR77e9uvD7ja8rGEhU8rKv1q0+5zulL3u4/jsssncpIk87OdEu41tCs9X8pgtcNuTr4iq6651iaa/uf1n++dGjr3AQ5FNrhia427b0qrAfvNgSsgej66KVgfZ81i3kvN71UZQfOJ9yH52a79++yVJxjZqQe8dvB+gmgOfnfTnEmgh5IfP7rS9weaK9KXQqqH+CrSc27jh/0pEKkzaYfDVyh7onqH7JV4e3b9yAYHSHuBvIfEDwR7zvxHxdoHuXiZs80ucHgR5YewSTKWgmodh/XTurAvSh0eVH2/ogfOJvR7Vz07j2i/KLo0B/4fv79R7orOJix+/4rH5cccfcBLbbIebH8B7sfgKkx8CvcBN+7hJXHxacFursTx+QfvH8En/GodrJbdurA5KxyVsHox4iff7ne62X9KKpXgmKd/NnbGwrhKe5JJqsW8oOi6AJ79vhFx2KWX4iLm7nGod/wkyein2p41uPjcZSqe5J3rdjJqtjkcFkQ7mvYqvhcT2yUXilx5zo3u9oZ8ae/FzVbkn+F+894n+FqSzGfLLOAAmfmWqMAMXCtyVtab82VzccvZgfp+02ihK+6snorm+i2euDj2wVuzRh6VMJaHzXZfcxplmbf0o14waQpL925/iQ3e4p4HMl2mWoefIUJ54/pZB5Dy8YSnyhvwvuGe55uxfn0Keee0Gj+tuHqD2F+2hunk+621EBwBrEPD6mryU9WT6Pji9sz/Fofv1hh+uF3ldtuijaqG8ehZmCXue5/OrOTF5pbe26loUG8eql9t3fbkF7pe6vMl+kbOX5l5ReoX/5+qv3DpY7cGShD4bnz8Xvl7THoX+eu+BLvIqfuWYeoYYN2WXuNfoc+RmOlSG9hjV6GH17yV/pPpX5lrx9Ax6raNfY2hOaUaVXq44NeMq7nyC1ON218UneX1R9VfrXxOrCyw1N3orDfCj14lfnXq14Fff9tE4LoQb5zCs3KXvV5deA3p7oP3o03YYwGY3mP3De/X7zbVev+8v0qs6B7gcr9fX1G5MxGT51srCwFrHotaqlIt5zecTjNHp30+3Q/A6ZTmt7H77Ry15TfXOeM/pWf/HNuI7p4pN7FO/e6Pon6+j4t/7f9/NBabe8duft+7mAwPsHeA+tjjvu9K0d8QO6+8FbCyrOTgeQWV3rFYuaF3t49l2sRywIrGMBjPpEHy3mVc1Ywjz/xfW0N+ud027emWu3fjJtXkt76G6xb7WhmZ963mnX3N426321AfzYAL4gZKu/3ky/vuI3q4837zhs/t2C63sDpb6730D+bfzg/5dsEzyjAYhXTysgYtf4Psd8oH8B3wo0vrDvD7kvMP5N+w/qirfrA6qjw95rfKPuD5I/F3/DnzfQOr8rXfeTmt+v7G3rD/o+GOG4/IW8PoDmf7H+vUJPf1VtCehH3QmqZOu5BiT+E/6TjQc4nnk56l1xl7hCdXuLB1Sa3fOPiuddeYa0t7nOQb3T//PgP+d80/a+7T4CnM7rwBStPXyRA9CrPmT8jfnRrcMahcRw5+GcCEFz9o/+Bsz/BQYp18KUnnwjJJHeTPvJ/oBcp50YKmEIvtZuyx5yKcHPiP2/tamaO8iJd9io6TuS+WHVL88+/npDslZk1aKJzbcvpyI4+6PrT6jfVK8MHftAxVL73bNIlL4QeGwEr9M+yvuBIbn8vudqZmMv+r4JBGvtbu8/34g9rq+c2yKKK+sv/l6Q6zoqr7d7Q4oqK6/733r+a/5orWOE0ybzWJLzGUcE7m+OOvr7+jrC6Tp2/P7ez/9fxvpb4Kmc2/b6sfRvqV4W/7Ypb5xezv27+RhDvlN+2+lvwcr3bUYnJae+x3l75LzESV97+i/vr78Xefv2fMFG52gH4pHP37L9+6/omJ/e+lvmJ8u/9X679W+ezvPfB+lv8p6h+xvmH6W+Ga+75Lz8f7H6u/jvsZoiCpvqeOTrZv4L62+UfpuJ4bnV6de4HSyDb5p/vul75GymsIEfp+EMQW82/2fun8p+3KYt6F/N3xGv5/Z+vr6bYtR7o49bpfkFeJ/kfpDvgSFf6TpV/vm4r68+6fnVWgzZftxzjnhfoH9K+kOvhI1+av8NsN/Ffhz9+6VE1X73bbfjX6R/rf9NssSdmO35XrXf6xKC+ev2n5mnat4JO9Oyz9J75+2fyX5R+0k2s1OkY7ptLLPYpoz4a+tfzQc7G6k3neT+v4FMYl/pm7z+GSoUCON7a0/yKbz/Nf6H7antkrQekvldpQaN+mvpP/DbAxD61dm6/55OVfQ/rP/D/o9+v/eeO/ywur/5vzmYYnAxLG64GB/yVl1effgX80G2Uv3OCu8P7vOL+cfkDtTW2OZndPql/2VIz/W/2KzfaEX2VOf6d/sjG9/E/84dj0A7gzIwGT/91Pj/uvo/5A6o0w9rwW7/l3yL+nfo7/WONXAtKBXjbD/6t/X/6EebTAx957//M17U/cf5h/TQax4AMTTpRQZaxVtJu7DT6gAtv5AnV54s0E66qoZAEQ0WI6Z/Lf7/DEm4wZFi64A99Lz/En5ODF25CHFb7tXV9wefeL4l/OIZzFMgHBXbwCUA1n4IA7AEAvVnaFrd54i7bYwgAm/50TJc7SZOPqSZD0L8oEP4sA2GaR3C6o3GOp63sEyhX/LAHiAvO56ZdmzSAsBqqOH/7PfFH77IPD6i1Q57aApWS9/X357bL8q7td7b7bQH7qA776aA+rJQFaP5azfbbrGOQGb/BQHKtRMyJLfz7cDRH7UAhf7abflRWccvqStXwG7fF/4aA8L4vbBo5M1CsjY5AwET/em7TtPwG8TSIGbZUQG8AkSa+Aj/aAXZaoNHYIGWAvDpFPRnJztVXIlbbt40AtHr05af4FAop5z/bIHA/On6FA1+7FvOoGvETLbVA437nDdQRFAjrrtAiW7RAsAFtAy3KkcFf6+rfoHL/Df5iAzqRvtLoFNA5/qTA4uY9AxAE8HB77XPeWYl5fIFEApX4LArvIcpOHpSucoFrA535vtHYHQCTLZnzX77ivCwE1AvzZbXd6xRfQKxH3OL7wAlIHKtILQ0rQg4B1Z4GELZgGPA5/b1HBwGEXf7q/A84GtAsT7K7Fgq9tXAqggvYG//bTZMFbJR2HBMYwgjxxj/L4HZDYQpeSIxaogqyRIgkoF6LasaYgpSZqFNEFzA1gEx1OIog5fEG3oKwoHfQEE1/JwajANTrOPXUZ0g+IpEg5wEkgikHMg7JZv6DkGQgkIG0g4YGqWVhb+7K2YGzJZotAh94mzGjodFA2ZBjRNaenLoosg9+Z4nDKp0A7WKcbFUGuKFv5jAz9i7vUs61bKcCSfYu6fjTAFOA/VpK1NfaKvHUQjjDE4WgtK5Yg9YZ5XM0YfCK9ZnAspbpbFJrNArwGqjB0EZVXErQSeapJDX0GfrT4GKXcAEqbLihuDMlqqbQ/4hg8baxLYA5pTCUqjUSM4gfLUGkgKE6MzfA7bQV4EZghdoEHYMHrDdMHLAp0ryjbYG9EFUAlgnkF47JU6hlXn7L9NuqwrBUHT7evZb9TMrjNS06tgi+qVgxA6KHHQ47BI5D6HNkZ9g2sqNgtMHeHUs4S7aO5cvCcGDlMUEy7Vq6oHdq5RtNq65nakH7Xc+4itKB7ofQB6bgve7Gg1ME+3dcEBNF+5NArh6tggx6rg59rGPdh5smBCoI3fsg3gndiiPWcGXgiJ6aPPZ7/3TWArfIB7ZKTdaegtR5pSMEgpPLSZXA6B5pTHcGl7EcHyUV8FZQBQAKVC9abaI+5F/C3btTJNR0XbPbwQlCHWtPQaEmZcr/HFc6Ktei5mDB2xHFA0FB/fUFoQs0GX7fbZE/JIajMBgaq7b86EQzXYxfFXZFXFmjUNRq7UvJiFHWYdT+PNUFupPiGaHHUGS0CQ6ADIEbRta9QHjTQ48fRvaYTQob57Aq4agoSGaDUpxVDYZ5ufataknIXZJbDAJ0NWwHeAU6S1mUYCx7C87pcGSFDUQyFeMHtpJDUSE30V06JXX8bmQ1XCRSMHycbRl7boP67d3J+5yTZv6uQpcEbHK7wvXLe7eQ5lrH7O5bwg0F46De/ZXXJO6HgnBDmUfBASHfyHcTTSGMQ9CHz1U5ZHA1AGCfbLJDrHp4PvYSbSjcfZZQz/4ELEqHzPIsZjrRWQO7AUHkAxUZq5PCGmQj/qonHNY7sON4QLDwHhDaSGonVsHrGcSHv6H8GcQ2T6IfP0bjoQDZSArpZ1/WQHdQ9pbcbRub6QiSFiQmaEfTPNjlgtdaMoXX773XJ4o9dF7u9XEHbQLaEWrb/w2zByHNdDYHFgoq4BoU1ZkjJZbinV9bu/f3b83MX7lXB95OQgyECQ7aAsfd6GhvTFQmQ726ZdN6H3QhqaSfcT7AwzQ5WLYshQoMH45jDALUjK/45XAiHpQ5loyjQqauHJs6yLfsEhPfCEMtci6Qw2cDQw6bYVWWxBYwpqE6LJGEitPGFkGf94B1GUYvDDyFpQyiEx1HgzSKeXBFXL15IjdT75QyjqFg4posw3agctRME7UZMGvHc3o8whwDMw75ZKTJExxeG9jnnf6FIHMcGAHMqGWfbdBM1BKGDhRqHyw3C7eAfQZhDBkG2XEm6awEmHywsWGtpB3ZbsJ07mDFWEXfLg6mwriiNYKFR2LNz7PQy47ebAyB4bJ4EYwx2GTQmKbew7aE1HRBCCbNZYYwpl5H7EOEInf2GDHdmCsbESafwKmFfgsMD4IQyGhbaOFBwgvRB1f5rAvMyZyvYQ5cwiqbswQxCFPV54xYLOHjoHOFDQ87YFwoiYfQ6kZfgsuGDIXOEvQ6Y5Vwy7a+fUM6uTTA4WDbwAVPfFDnPEVofCD0In/dwGdwsgwnPU6E5TZy7KtEgBEwlWGsWDuFHLLawVQu6xhfTiZQQGWHJyJm5a7MIZYPU569wsI51QYiEqw1g6q3DJgEmHeHjwmJQrw8244Qwo5EbRJouQU0yaw4W57w0IEGfTGEnnGL5HIe4F5wgOHLAVZaHnJOHpuE85vwlDYpwv+FRPaRpowcx5LuBuEVwn9YGQQuHa3es6PKdO5QQQBEpnLg6JfPO5oIqFBowgOpxId+FLwrBGTtLCzsQZmr6Q+eBf/NNwozJuH9zB2aUxDOHygQ6FM/DOF+HP6G5vehGCw+UBrPD1qCwjk6aHSvjntY7YpNZhEetUhHwbLr4Iw38acIxCbcIihEe0MhHl+ARHnvShGUYVdY5tBRHx6PKG0Iu2aCInI6dDPEEBzdgGaSJ+EVvc9i/dOtruzKb6WIj+xwgrSEZoFRH3nIOSnzHo6hmA7Zyw3N7IDCxGhmAUEUIsJYPzARFpLHLrR8GnT6wo1r8gxAiSI7GHfaRxG6Qht4V9YYFWcOxFcHcd4NrF7b75Iq4WtCXaqWGIj2I8xHntAHaU7E66etIbo2yPJEqImMzRzDwYVHaW7uIwJFIdVtZUnbzrTtDJECI+hG8efGEUI4RGnlBYpLwkwY+zbJEruYpESw0jh0HC+Fu8ehFDvTALTvH6HTI5RFIfY67L9LkFs0ZJHjI7Jr0IyVYrItdYfCBGSwEbE6nvLLpb9ZZHGWOEFdzf7phgOk6qvHD7rHQD4s0IuZx3Nmjg3SOE0TIJFBdV4yPI195OIxdqmIg5FeI5d4JLD5Edvd+x0NdhFmI15FmjYUHmzNiGQo2zpIvV2Gkfe2ZIdGnAY6MMbtfMwhkIn1rzI37qjIDLSVIjRFUIiNpn/exGTI7BpmvfTbvxTF7JjLFHDHL5YXzNXrvvHLL2I796lA7UCobfhQjdWlG2dF46gXVCbMo6zqFvCTYrfF5gGfQMTP/FJH4cJUEmdfkEXibn6so+/6aHPlE5dRrQu+GTL1zQoosOVVHPIznSSogQ4jab3RcrEbSF2UFG/IlRHTw4KzxI4PpxIg/o/woSYqI8dC1zcvbmte1FWbS5FgfBjg6ohKjsrA2aiPEbozw2t7UoyUFbwlLbrQmbYao42FfvD1F7QlIZ5jGUFoBZ1F5jC642o2BaRo9AJu/Kd45tSd6zvDxFmIqt5iDaxoQFZ/p2CMhH8zARG5on44fQgtEZomd7CnPpGH8I+bIIm/QUIjpGRTSybEoyf6DbcKECXTaBQw+GHRI1zqonWZFstFb6t1MVxBHcVGIdY/7FLTFGWnRpbTorVEV8AdHKDCNbO7WGGpQtZGE9c95VfaOYjzNLbQQO7K9o0mEZ8fN7RtOvDsfJLpgddj5Mot6GG3IOaUmOHrdrPo4Ho+WHrdKxZTgaOaQ1Cva23b/hzvHlH9zAjgBLdgGtpayFqwwDEQ0Y1EifE/pxDGFHygIHb+7JzC3o6yFMoqxbH7JpEjnVZo2NHJ55IqqEX8PdEcSfSFstFRwSzedHvzfN5jiaDaRtBpbvoqJGHo42aAw+X55jXpGNHePTYDcdEmcOjHpuNOZfgiNjwbbNEHIyDEiTTCjx6FW40w9w45I7K59okjFNbY5GoY7Gob1A2aMYq9HhbOTEMYm4Ev3VSwKY1jH/opzaiYldxcYjjF5jPeZMo0jHcY2NrAY9GFjMHjEKo0jFfyTLQFUJmo2YoYIKowGERTGTHgoaTHe6RTGXbXiH5tT16CY0zHiYmjHH9UjH8qVzFA5cjFfPTTGkYuVHAA9wHeYt0bUY59EMfcLaurfzEg3FLE6zWW6RYy4EWY0zH6Q1SzZI3JhWYtxbPvJEx5Yt9HOzV1EIfNjFXnSAqtpIa7BjfFJmwp9FfvQGEoMK1ruXAOpR0WNoOXTTGAwqCChqQrHZLArF3o4jHmNK87DY9oaTQuLGDY0bFHomrEDYijFMYtNwYfddHH9a9FzwTorA3e9EAtA2ZPI+xHh6JwYF/WqFRHfZgiggLGJYzVjHoz3SuYlk67Y8DHDQkzDnveG53YsmZuI4UDhoit4HY6EapOG7FHY0hGaHXrTwLU7HmzYdG/HIZpwIqrGA4t9qjMH8TEXFuow4n8HnY3N5fYg4FAXHbgVgs+Yt3FKyVYhFFQ4tN5ugzbJ/9JthJ5XjEifJ7ETIXxqwYrgZQlQnECI3D6tcKnHiHWaq/iWtETooHEGfKzhxOT/5etOZGs4jND5zAVHVdVk5tbbDRwokWGoTJ7F9IWHE7oyBpS4n8hc4vnHk45WCN9SWaJIhOAJY3N5vQvFLqopJFE4xJGflZaFvtSD7o4ut6OrKD6G4r/quA6B6XQjpi7IgygW4p+oyjG26eOS04xkU6Q/IkT7CQpnExkZ4bL9N3Ey9ZSGTo9S41aJZHO4/ZGe4lsGcVFI6QNYnFq5UnEPYpXHzwWEGqHILRJyJuasYrXG245PHL9JPGIgh3FmnWdHxjQU5R4nHFcffnEzzRgHTxVQ4ytIF6l4t44o4y3EKzYTFbGGvHcMOvEPvBvHKXGuH7DPM6V4rMHNYz7GS4pvHUHMjB+2QeoA4ofFdtOyECfUNFF0X66sYzvFxdWfE5EGfELXSdga4wfEC49LFF0Rn6y4o+pJWAHGMfdjZtjGfHsnA/F84vHEP9dDGZVJZEhnTL4L4xj5SzT8zVfU+rpvNAYe4h7GX4s07b4vQSq4knbODDfEHIr/FHHLN75jVXFjNKwIf4q5GXYrfEhnfo6ofG+HGWPbEP42AneLYdG5HUgbh4z/GMfBrBWQ4XGIEtsGzYutY4EhcFWBPBa/vO5H1IvFblrcMoVA3PENgxXFlogt4c48R4VHDnGbaD7G/IpgnoBEWLUxT5HIjb5FUEj6b/dTsFdzQCadg8pG5A+glc/Nglj4ljqrYpAbcEwpHZZY+GMdD6FF0dpqSEid4GItjhWgltY6Enh5YE6AmHI1t7iEqQ5qEvvEaEqAluohxGczEnauYvFL5oktGMEuwm1afVGv4sWY6zL8YKEpd5tzS97yQ2rrnzHWbwEttH19J46EooVFzwJMajIIwk2EjZH+Ew7YSrfwkJXJNFm8ehEhIrMaZIjInUI+PHGEvRGlA/xGFzIb4PKIxqsYv5G0Am0FvFfAEzXKolLw70EvpQQ6Wg1Q6SXHbhUAhQn1E6LCSXKr4VnXe78oJHGIDDomQZL9Hug5/pdE1lj3YuNaDEmRY047hEivYYm2dD0HtE1fayDBTCLNNiGBgnUT+gxJ4xg77Gz49t51XIIk7cUUEiXMJ547cS7ZDSMHhg4Z64Yo4mMPfcGLqHS6WXEm4fCcSEhjLoacE0w6Kw86oU3F4nBXZWH9gwAmfE9tH/E4cGB/IcGEmJZZiw7YxiTAcFiDOMGgkogkMHL4nQ9eEkQk0sG5grMH9EgsHIk7Hr1gmQmlg82G0ExEnLLZsEQfGFb4kqj54kokkd7Npan9Y8GiEog7X4iQlcHHsEgLTwnlgm3GIEikn7Yp7HsKPg4nYknYckifEHLGuHGXPM6+FIUkX4p7HuQLehCsJLr7vbwmpE9LiL4+epHvdfGvY2pGfg4UlkkhUl/9NUl/vdvGoTFUk+HAQlwvE7GyjBgnEktF4ik6xoO4ag6P/RF6xE7zbWkydEO1cwkt44qGHNJeFEvAaazVUsjP9VvFekq0niNf+GvLP0lTrSBo4vdyZLLH0lc7YxFvfa0E040vIfEh7Fe41XCyAq3IP/Px6KaFMnGEtMmupGa5/0fDFW4kfi5Emwn8Yp+oPo/fzFkmqwxXYkkvomaZ0dErb6nU86/OQPFA4kEalXGfGEfY+7wosvESgxvFjNSj7no2dbaIvslvHCsloNN/H5sGB6lgrHEVLC/GMfFKzmovX7e4mgi+4vnH5k57pFdZfojw1d5lkqrH5koZj5ovFH5HHbFF6U8n1kuT7DHcImitNXonk4i6hE4Y5m41tLAvdAIfjKlGK46UmFDAd51goy7WonRFCTfAa3Isgmf/ECm34IQlII7tFFEjlpjQjuYD4g5GAw6qbQtfyG3IlcEkXRC7x7Nl7HlI+52Yhc7ZkxcG7nGKHl3EKEbgwmoyYKL483aB7ZXaR7qTK8F8AgnGvEKnaAXZtgUUwx6IDeil53W8ZmPZiZJktil8Pe4nUVACH2Pdh5ngnJTLjbilHAu4lJPYSk+PaCZhrR8FRfcCFgE6x6CU2R6V3bh7paXin87J8EnEtSnQQpwaXPO54KQ9AG30b54QvZEEXPGBFfwd55GUt574tH56WU0s7b44bRsQwF5gvBykWU7EEwvJjxmkhV62k0TbPg47ouk2/7SNPF6B/Ol7hUrsHqTWMlPEsv6kvJXbxUsyl/gp87kwyWjuQzua6jDKl7gs+6kUparrw44EeXbl4ugoKm9A6EaivKbxzEzlHCvSCFKZNqZqUJV694uV7fw5F6CU1N48XbV46DZomdUmLCJDUqnzA0yamvfNomvIWTGvWqmIFaEYOvVLaPQ0lFeEzUFOUt17evcRy+Y917LU8antUpmFBvV3www2ZGgbC8ExAtqaMI3L55nI6ldQ/allU6HGgE2ckYDack8DdalN+bxEsE9uGuIp6nCwhP45o8j7/k5tbVvMDoNvfqlwGVt4ftLt5AooGlKeYoF2nXt7lfKZH+o/NazImGnRUgqGxItNFZoqtHI0mtEI0iXFME7cmyBbskvdaMEHIrcn6kouh6E6t77vGkb/U5UkqImzostIVHU0q94Y0uhFPvE+YmA6k4Mo7lHX/Ct6KojKGkEiCnWHcCksYh4Fgoz6kq4ykm+NMcnGfNqnGYTPHCLHa6f/NJ6y086k0TB2bY08ThfQlWn4fBml2zAcmO46j4Rkn6mjk/GkQYpclsfVcmsfC9G9kiWktY3D6YPXGmv9RWlQTKDEN9MGFggp2mRTdPGC0g5GazBMKqfTG7KfBT5JhO0HEA4m4c46sL6fDBoC08X4mgwpzabGz6Dhaz6pzMIb34j2lB07TZOfQo4ufOqYYwh/T5glOk9bQzaxTNKYBfWcBvUjmlNXF+H03T+HTwyinwRWcAtUlMEJfL5A5fU+GDfOdrpfSb7rUvr6FfFulpfEfbd0imnjA0oG1fTr45tIent0+2msgoLodfMelq/Vr623Dul0/Yb7d0vdqL04enj0gemTtCb5tfPb4wAren906OmlAv6LrfAn540I+lr0/ekb0k75Ug7ekl5IIEpUqEEH0y+lhIxb430tQGa0i6kP0lYGPfDH6f0sHZ303kFCI176ffb+nspHrHJ09YEAM04Es0lGJLfcwFv0ganLrGBmQ/a+mg/UYELU5+nAPN8mw/BJ5/0nIG4/EvJY/ZBk1jHOngMhBmE/GNLAMgBjJA7ylBdSn7Q4D9FM/Mn7x1OBnEgmhnM/fcj3fMZos/eemk/YQEJYDhm8M9x6tUtBk3fTn75deH6iMi2nvU7wEFEl+6W/aTr0Yz6GG0khmlA9X6KM/FHqouRl70vSzntHX4PQ/X7RotRln07Rk0dU36GMsM4W/F2GW06hnR9B35mM+35jUVX5aM9GZOtT356MkMCuMx344Mi4G+k/362NQP6+MjJ5GM5xmzDP74ZJBaGhM4umOAtqnZ/Av4qgWNFhtBcbxIVBnWMjKqxMlsjiQtJnkM5hkT06N6V/FxGQNMMy3o9mnyA9ekXrN2YsOBv66jcpn1/eakpMkSHK4l3wXTGyENMipk8AupliDEf69LVXGdMzmFCM9pnpkld5z/DK6DMrYHZM0pnz1Nf5DM1f4ypKoFeMoEHb/XynL/Pf6LM3f7cMydGWEp0EnYjZkTQsZnn0nQ68Ep/5Zkg5ksOMVFgM/YEpzd/6NM+5GXM1plrMv/5AXeLHobP86PMoJl1UuIYQAq1p+7dKkwAqAGvMiamo40ylgzM+aAsnKn9M6VIU3PAFavCFmEApxlvM2YakAx5TkAhFmk3O5kVEvvEos2K6ikmFlzMmkFxkiXbcAqcHSKenBtM6RlTXfgFQHQQEITGLbxYTVGws/5mKAyQFn/Fx6MsqJnCMqW6qAp+mlPL6o2ws5n30qeErvHQGZ0vQHmvXln/07TbWAiP5Sw2aaMonFl9/IwGADPLESsgEG7M4xl50sZpw/dZ6dQxuH10sFnKTMkGwUjbLxA1FkiTRIHhA/ClxAj/Z0sjalyTU1m7fCIFhA2+mis3BmmTNIFdMhMaus3pk6s0llKovIExzJ1G+shiFOs7xnO9SoGjM2OZ7k2ZlBs+ZmlAxoGzAioF7kuNkqs4JlerHXGrAluqTA1YFWs7z6J5XYHpsxJGRsyOnRMlH45so4HTA/XElU2VmGAjGaf0pYHlomtng03Ol4HTYGDAjMHNs5Jnes+eqHA+oG8zU4GLEwtnCMguAgQ86aqYs64qLP5nWs5lrvAlZF6Y5hzQ4QzGVsg6nabFxTKs+zE/AksTjs7P7gg+3Eu0sv4QgrNmaAhEFpOaRaBiOIF7shdnv02QYYg3QnogwbaG3QOnKMnEGtja9nkgp9l3s41k4g45FGszkGUg+Qn9ssFk+FekFuDJkHYSHll/sjtmGvdkEgctKakgvwrvsi9bQY4or+Q9VECghtkPY7Wk+sgxkQFclFSgmNHtsiDGRovnbzFfiGWEjPr3U7SFxkvUGpNLl6UczQnnsnGHcQgZkNUpokMA14oHvOllTEyErOgwqlwYgnGzE8akccjYmOdJFm1koMHjU84lmjS4mm0gzaUoq4l/M8TkitQWHxgqVlxg37BKMuNZQk3UqvubMG3rEg7zsqNmiwnEmd5C6E9s4zl/M6sHkkoknnow8aCMr1mqjTvZf9WyFBk4vGOncamskk0ngk2EmH1DzkksoElODEXaTgpXbTgoBlJszLr5knbhoUx15JDZcGRculnz3MimjslD6PXXCmgs4KH/jT8o8UjsbHg88EhcoSm0VOSlCPTSkRw5cbCPW8HjU9Sl/3EipakjlpUUtqHEM2x6yUyJ6jQodmkVMCHNciCF/MvB7awWgBsAOADmVJSp4ALAA2VEIA5VfgBqAJABmwQcYixEonuE+xpTcim5rohNpTNTiZL/cKFCNR5ChVMWoRVayp2VNoCVhGTbpVSjTLc01YuwIVFTgOLAncwtpLc89pncx5Yrtdbk7uMKrmVB6iRVaKq7c0zYHcyeBidDVyf2Jwz41b7kLLGCkvTK7lJfGFalEu7mGVB7mbciXgvcnblUQPbnqgRqoQEG36g8qDbwTJf4VhGznXVYHl53dHkeYzpr3c4ypQ8rpDooGHlCAVlH7cxHkYsDwDoTObnj6YCa0827mLctxo080c6FHKi6zc1nlkGO0Zrc5nkljBnmFHXfGagKbnmwmbE88+los89DE7DenmnWU0yMrbHmTcmXlhDF3FW3KbkWfJY5Yw+XmWNVXm2fe2RvjKbnHM8dgpEptqa86Jr68xKFRTK8YigIC54pLYn483nnNjK3l/nG3lk3aiCssOLyA6S7n28onZW8/iYe8n5pW87iYXcr3om8upoB856hB8t24rciPli8pNpHc1aER8+xl4k6Pl288XnXc8kkJ881rPJaRTJ88Hmp8kHlT4rwAZ8j1rmUQ5B+8oHle8ydol8mCBl8v7mgwwvnooz3l58tHqWJallRmdVqWJdLGG88TEh81Sod82sywEFb6WJUGnq8xvmx8l34iAqbxAjSxLS3Vrpy8ivk+1aflIjZXl/c25ai8lPlj8lxmr8gYLt88ByNQbnnr8wfpfc3fkC8wfnH8+Y7l8pvm01f7nSKatYr8n7mA8mPmH8l35n81zHX8+PS/s43nz8/upv8tNz+Au2r/clFEAUodo98p4AAC7tpY9RflWtBXEX8jfnN897FQCk65D88LHd8r/kUNJAWBjQfmVnC8m2TGAVP8lxlYC7+AxmfSEt8pMYP6DXmoC3vl18isKao+xm4Yr15lzEAVoBKvnYCqw490gvkY88gWX8nLpZ8+trDTTPko8vhnB8igWgsG7nYCvgWJNdHmo8oQVcC7caSCwQUq88yjJqKQW4CtQY08xQW8CwQE+8jHRfzUfl4C73lu8+tqsC0caO8ltJkC3QWqCvnklCUwW68/3k4I7AWtog/kWCh3l2CwgU4C4wUwlDAXmC+wYS8iz5ujF3lTcn2mtpaAWP8pwXe8xXkRtaAXuC9DFAY5c6MCpCDC8wAXfU5iD88nWYf84AXCC5IWc8zLR/8oXlZCvHm582PkBAaAAwAAWDQAXSqcATgDfQQ7JxkfUBCgInAUACoUgAFkC8wGGiyAFkAWYF3BtC98CgQNoXsgJsBtCupDtcNoWJKBeBtC4uRTIZQCyAGoWEAOoVKASYXoodICGQfuBkoAAAawiglgiRBoglAEaFPMEoA/gEmFIACWFqwvWFY1E2FwOEUA8wqoA6QGpYbgCmUjQtqQlAD2gBwpuFFvAuFDQoAGIAFgg9Qr3kDqBdQcAGmF2wtkAZKD2FQwr3kFmG6iQIvfAgBCBF7IDwmDQr3kgws6Fe8kSU3WiBFxck9oQIqmUGxnhFKwHZU44iBFhVjagowr3kSFiWEBIosweawJF74EKaBIthF/FAJFdSHpFJIpRFaoAJFxcm7hBwpWAvwv+FcTkygbwpiQVwqoALqB4w7YB74KwFpA/cAdQcAEWAFIDDwDQtkAk+EoA81QVFkuCVFOYGeFIorFFEoqlFMorDw/IoWFVAHbAlYDcAswDcA7YBpASxHlFQlN5g+XAOFRoviAJorNFFormF7wsFFIAAAAiuNBFgOLB2QPcLuhfsL4RZ6LvRdOAXRUhA3RUGK3AA9g4AFqAVhcXJ7heyBzCAcKIxVGKYxbmh9RW6LqWJLhSAG4A6kPcKLMAW1nhTSAsxTmLQxeihz4OdAbKql4IxQGhARTUgbRRMLAxV6LxYK8LLhYdkjhR4AVhdRAMoKcLGILWLT9HsKAxbIB2xZ2KEiBsLexemK2xcsKOxV4BuxZ5QzhX2LwRU8L4RcOKZxWOKthfyLfnmRg1gB8IpoDZV6APQBsAO2B5gLMBRRR8IAAFS63OAAywWsU0mBMxMi/HjgihsUWQPcUHirABHik8U3wCYAXi225Xi84WTC357JAEwBQAFAAAAfnSAsZWmFqwCdQtYtPMCZiRFHZgTMf0AOFEEt5FUEsHg+ooGQIADy4NlXSACwG74AIqtFAlkeFrQtbAFmDlSsgB2ejwuJFswHZA9mAoljIv6FrYESUF0wolxcmqR8IsBsXTElgFEvZUvGwolhIuws/Et5gdh34lZEsYlAlnfAtYwOFeEp5F+oFLFboqWA7YDcAKwF4ArADQANlSwAbgCWAIEAcAtYrscGsANABwsUlyktUlWAHUlmku0lq2Hklh2TxkyoBFiJMkaFvMHgUBwtslXgHslcwuiAUlTAAjAHiA4tQCAsEIqFVQvSA0wtmFVouaFlABIl7QsoASIpZA3QoOFbIEoAjErygITHilIwvil4wv5FWEt5FswonF1wppAtwtrFDwq6YmUpeFHkqoA8lQqFBosOFU4rWFs4tHwvYqtFuwoTMmUuHFJwrnF44vmFVQq+F6QC5FfwoIljQuBFCZlBFKwHBFPQr3kUIsYlS6hCYJEoLUITCRFKwBRFxIp5ISopmlWIu4lbKkoA+IpJFJMjz+BIptF80sEslIpJF1IsmlAKgBYDIsoATIrJQLIs5FOChCYEoE5F3IoBFG4ozFmosJw2oulFsotrFioragY0olw+YvVF8IuFFoovelNIElFn0r1FrYvSA9oqQAjovNFlovuFqUhtFhkvhFMMrhlzotylVAGrFvotkAUTCVFg4o9FTYpDFmMsJl3opTFsYsKlCYqXFsgGTFCRFTF1krylxYtzFuMvzFtFELFTMusl5YtEAlYvSA1YruFuMvrFmUr5lDMqoAK4tHFPYq2FjUqhFBMrFldUvnFJMpXFbUvqlksp2Fi4palNUtXFEsr/FDQs3Ft6G3FEwF3F+4sPFx4tPFX4svF14qtFt4rNMsgAfFewqfF8gBfFxso/F54vNl2soFFKESAloEvAl+6EglXIsHgVotglLuNkACErsQyEp9lqEr9lpYswl2Etwl8wHwlvItrFREq6YJEtmAZEqRFlEq6Y1EtolY0tmADEuklzEqZFswDYl2uAolUyjcsPEseFrItssJMkEltlmElKcsEsCuP4lkkoelHErjlskr5FUMqoAxkpUlako0lWksWAOkoclsgH0ltGyMliwCUlvcrMl/csslukpJlrkoDQKstkATkoJlC8vclFwu1gSAFG543LgADNhgArAG5A1EFHOIAH3lWAAkAeADEFVQpgAvADWA3IGnAu/JPlN8vPluAGVAJ3KNAh3kxqFQBkqyQCSAplQFgAUu02G0Bl+RKIqauCCDQEPMJ5ttS25UVVh5N3CqFH3PPk84l7EOIJcGMinhhYCoJ5j3MeIpPJcayymFaPgiQV2YhQVRkIDxgvQwVECqwV0PO25MVS8A8Csp5jAUIVANFqWPOOAO/x3IVIVUh5UCquMOCtKqeCoQVmbEYVMSzEmoHLga7Cs/QG3K4VUSB4VcCoR5LlQTsgioAxqCu4aNrTEVWIAkVuVWwV1CtwVdCrkVIiAUVg1KOehfxCeqioSA6ivCqVCpgVNCr4V9Ct68+isAVP5IomxipkMFCqJ5U9mkVbXB0ViVQl4diq4pnpOSM4ExMVPQDMVT3OdY7itoVsiq8VDCuQkRCrnGOqhv5MEjIVzio4VkCo0V3Cq0VvCs8VrlWdYPiqmucSoJM2IommgSvwAwSugVr3IyVESqyVU9hyVa1z8V6xmzmRSpmgnCtSVEfDCV1it0VUSGqVEFwxhzmxFOmCtcV1WFaVyVX4Vn3k6VtxzjmOI3QVSSvEVTSvMVUivSVMivwVblWiVTCqpWu91xKKiqmVaipmVISqkwrSsyVBCuWVz6x9pMRw2V4CuSVlCtCV8yo8VFSqrkoypAaubD3IYyI2aDSpKVaSssV2ipuV3isOVCwIMZ8WAQ2oCs2Vpiu2VpStgV1ysWViCu+VH0x9pfyrYVgKqCVwKue5VyvCV4KvIkdyvfWgl3iwkjxcaLyoRVlyveV5SpRVIyshVqON+VbrlOVfSskVbiqRVbSsiVAiuJVjeMsJ6ysSVZyumVKStmV5Ej2VnyohVszhWV3NIs+EyvJVLispVAyupV+yr0V9Kqvx/KpFWgqvOV/SuzYnKsJVS/jRVxdTFapBwBVLKq2VbKp2VwjgVVwyuzYyqqZO6LOFAsKo1VQKq1VIKqsVYqu5VW0lrEkqt4Z/yr9aOKvNViKvxVCyr1VJKgNVEpwTpO1CxVpVSdVFyszYuqpsVRKp5VAuKNVNQ2ZVFKuaVVKtdVYKvdVuyE9VFuX/xkiFZOkrARkoyFZu8sLAE7SxYVRYnJBqCrzVkasyO7AmYVuLz8ZEUNQVF1CcVpqvTOJapjqQCrCZ+asj+vNMKVcKqhudasmeDisim7ULYWhis4Y9SrbV8Rw7VF93v5ZBnYlbt2eScWBoWMqoJuw6veueSqV5lLMnVppmrVwtznVbrybJAqi/B8j0Tp4J0hes6ttVMdS5QHlC/Bx6t3VdYzXVh6rkmZ6pVh/F2B22ZOVOe6svVyCqPVlBxeo26ofVo8lTOz6piVnbPGVWEzpWxyoA1raprV7aqvVYyoMZ0OEWGp9XCFUGtXVxavA19yoN+qnMJW0KpQ1Raqau66vlmpKpAeXKzQ1IDyvqDSrMuWGsNVqqvgJbhylVgWxA1P6t5V2C3UJ34k/+/KoY1GGoPVL6rZJ4aqLsFGt4ZJdO/gg6uI1iGo9J4auXRBh29VZq2yuRGvMW7AktQtgFEAEgDUA2AHSAs0EzAAQAuSMmrk12AHtA2jkdA0mpMA6mpwApiGU1lBTU18mrMlchB8VOmtk1JmsU1o4EM1YxWM1GmrM19Kos1emus1lEFs1qmt01Jms01k0nTgzmqs1BmvggHmss1DmocQ5ms/Q9mv01ZBHc1ZyQi13mrC1WIAi1rmtuA0WukSsWsc1oaoIgfmoU1AWpU1MWs81IWqSQ8WoSAiWpy1Rmvy1pmtC1TmvC15WqS1wwFy1qWvK1cWqq1CWpq1pWrs1jWvS1Nqt7EWWsi1SmsC1eWuC1FWsK1zWuK1rWqi1/Woa1g2qa1GWu011WsG1tWvrA9WufYaWsq1M2tAAPWoW1+QCW1xbBW1FQtVwEyCTks7VesrtOh29Ip1hMzNmEOso1BzHU6FGbUMVp2v/FcwylOl2v21RT0RIJcru1aiPKhr2oNuD+n6Fd2onB1/Ve1j+m+1d2u42TQP+1rikO1bMvlFA9Vt6VFH/FrCrX4COp1liVELoiJH+1pNmcRX6gSotVGR1Z2pka+OsR1eXC/KsGlx16hL+1xOoIJqlEx1F1H0eVHNR1ZzQahVOrgelOtR1DnUkQMOoqF3gECWROqu1klNJ2Z2uSGs+Rx1kdG4GGOse1Lgoe1V2ofwNtxR1AzM/ZbOoGZfFK/pAzLiBNOse1N91eINIrF1cNKV1POt7pr90h1vOoR2XOrDatSI6YPQsdmgDPl11uuOZ0urDaA32yyVVjDajS311TFNPRquut1T1Im45uqH8ZOut1vbMh1lSOY6rcu517n2cRRIASoBfxqSmOpFx2WSj1XqtYR92FaFSes915EqT1wVh5W0esihHU1GFSevp17Epz1Z13uwBOvuwX5RYlXqvScTO24lVetnyfEqr1ziPbGOeuxcMmFT1bJ2cRVoxb1netr1bJ1nyGOxb1/eqt1feu/4EIrr1o+uH1betH1ceua5qlFu1+C3p1qIqT1sOFUoZeqDR2utZFaeu/RM+uVhaSXn1zuGpiH2vwWIurX1YlKO1XqrP1vevj1aSSv1DjIbOm+uSMQ/l91XqsxeaSUn13qrf1iOof0nutF17n0O1M+tBpaSRn1ymOyyv+of0kesBl4esQI5Y1t1V0J1xnOsR1/t1H1R+p1UdeAQNqOqUB6BvLR2+P11NB2Z1GBt0hyggIN8LiZ27esLs6OssGnqOZORBqoNtW1wNnPIh1iOugNROsmF5aNn+L2vE6fqKwN4nUAmMmCP1dghgNBOtzYcuoJ1TbFnyAerxS6uq91qqB5xY3Xn1Zs0l2ZBvRRpBsQNt7JoN4nXrBjBoINNzK0NbBvZSCOtYNsEGOOpusR1dlId1RhvLZXeosNZ124N2uP72sBp6U+BtY+9utwNU7LY4/RxRJFBt0G0PU0NKetMNLTLkN/hoL5uhosNQ8xCNkhpEN/IqZOFpPMNMWGxcthtj0xgKP1VZOyyOupiwLd0OUiOrFISch2mTJ05RTFKGFrqWgpKhN71xQ2QNWRuQRTFPz16Rqz1LgAqNMWyYp7erFItRqblRRpX16PzyN7Rub1RRor18+o30fOsPqWyBMNqOrhEThuMYR9VwNhpCTkyYUPqFut/IiOodJrxFnJsxtnyCIEGNz2rmWgxoDu8Ay2NXkl71p0m2N+xoeRuhIf1lkKskpxsINw/kGNw40x1r4Tnk8+ruN/ciP1p0n72HLEGNrxqONa+LY4F0XeNc8guNXxpwx/xrQNdc0GNwJoO0oJop67eqj+FPQeNLxClxCxrhNd6MGNIhR7ayJop6yRvGVuBuyNYxt6p+hrN1YuuOVTmA+17g2BNvDwV1IhROc5JrnkxJvvm/clr17gwpNhRoZNc8kh1tJvcNqeuZNcow5NbJrG63JrUNhi0l1/JtRNBJuBNJYIV1/e3BuCuvLGEVAV1Ad1waCuue1yxwVNyOtu1c7P0N+ernZcuppNBBO4Nc7JgN9JuP20OwNNNoJpIgpvgNZwMY59hs31hHIR2xpv7Opppl17h3MNc1VD6turmqipu1NgE0kQGpp1UQ3VVRAzOTVNgoDNcup9No6uh2oZvMm0Oz5NtvVbizGU2Bo/DjNNtzFNIL2DxSJpTNofUCZcZozNqpqNRMJse1uZq5N+Zpl6c8it1LNCG6/s0+qFJo1NENFJNkOvJeVkiZNENFD6kNk+qzZvpNTZq8kQuo7NVki7NOGi8kxJrAx/ZqLNyAPd1nSnaNAetoIpJutNvB37kHJsLs5ZojNz2orNYutt6FLQDNofXBNK5teNrJoXBfSGjNopv3NkJsFNgZszNYutkNfSG1NDRs06gpvyN15sdN9pudK95vZSyZqemz2pfN6oL6QxpsaWn5rNNSZqF1XFGfN2prRpF5sFNr7PhNjpvCJgRogtGZr5NoPkLNEFu3NoFrBNpZofh/cmtNqFu+N/5p1NyowGZh8JwxsFv727sFwthFqZN6+wbNoFpItFFq8k6FuUNoOqem45p3NhJogphhv7VauWH1f9H91txtotCeqhNlRp4MsJv+6/FoRNGRqPGIxo6WzMOEts+QMyXnK/K0lvGNlhJ4Mzxop1E0K859Orkt3AO/4oBi85UlvYt+0I6msJrwtpeoRNretf2Ylur1PU0KN/YPr1ulpL1W1wRNOhrb19lvp1IkvGNDlu3Zh9WOVDWHstQ/mhF4xrEp+Ir8t7Ru7hYloTZDOsPqoVrJFflooN1OARNopwbOBOqjAP+qONiTLSSFxpSt5gPCtP+sstUYCH8nEnCtziN2G4VtWNXFvYNOxvGNr+pD6CJoqtpCoxeS5thN1VreN5VqXNFxoatulvYN+9yKteZpCtz5uqNoxrlGSlrCNIFpCtQ3WFN8XiTNyVpRN2Vrv17hpKtMBt4tnwiDNrlvVN3luR1Sls/ZthqrpyOqONNhreIh9XMtpOyON8Rt2t4xvoJ0OwuNugGR151tdNRxs0NDpq85cuput9hputghoRN2zNgN1ZQGN8lsVNCVv/uG1qIuTtkPqV5sWtRyC+1pO1hNgZvlN4xtuR6OgRN0NrPKh9UjNfSF0tAYzlGyNozNyNulNU1sg1EpgSoYZif1vVpNpu0vkt7Rq2yCNpJtBNtBtUFsBtopoptgFtet0pp+tDTTG6N1vGtr1pGtN1ufNh1oDuyZv7BGZsOtopsOtf5uMtz5p+tO1tGtm1rlGBNq4NgWw8tEpthN61uPSYlt3195ymtytpBNrlptuPxo1tfxpWtaFt1tmFvstC5sNtc8l4trCIn6+tsNua1umNNlumNFxsV12/KVtnutJtrlooNMxpdt1MS4tnlob5SttqNz+q/hvttVt7RpitStvp1GIpOts+QZwe1ucRAVv7BORoMtnurH1vNtH151vaN1spOtzlqUtvhrqNYlqY5jRtetQ/laNPEyZ2ulp1xLbletScm6N2xgrtU1rd1plq85XRsZtFeqUt/ZykFgNortAlq8NAlrUtXFt4Nt4ARtEBthtQ/kT1nDDTxPds91dEqhtFBontnDHaNw9u6mCesx1yvRUN7OoIp2eoHqAKMl21RrDM9eoJ1eNpr1iOr3tPUwf1YZgrtx9sUh92DPtT1OHtrUGgEiu1xtzdIT1verDMs9qP1EX1vtW9uV2QlpXtOWIT18+pPtmlvb1/9tvtgDtNJPFoPtxxvCNyFNfuw+v2eRwJgdKzOzp4DoWmTQORtpOuRtFBqIyLFs+Gn1upGkRtR1sB2d1M+voaSxqId9OrWNL+oKtABqdt7+vP4luq/1s1Q6YllpGRzuqYd8xKWND+r2MzHVv1rFLOpOerEpk2OL1BVqP1cGzL6wjtvZHTGqNpeuY6kjsg5zupkd9tudt+C1qNbtoX1Htvod+1slZ+Dv0xoBtv1hlrIs6juit++urRqlFYd7JyB1Xqqzt50osdEdpkdudrn19DrsdA+y0ds7MlODjp8tM+pcdViQcd6Ow4dlhrEdTNonWDjvT1HjvT1rDoCd2VRz1pdv503jqZ2tjoLtRjs8d3hosdA9ucdkevf1Wdrvt1js0tYTqktOTuyd6jrUtujtnta+rgtCerEdF1vft9Dtstxm2L1U9vb1mULAdWjuCN3PSqd4hpn1YlIkN1+twNaH3CN2DpMNLFpsRsRqRtODskQI1rX1lNrvNOerMBtKyZOIOud1fRuspoBoWdMZERICzp/tseoqN9tuHt+uBxNIfRxNgzoQNLFvlwXRpAdM1z8N39ulNT9uBxguvAdTNtsN3wDfNu9rCBkzulSAJuE2VOo3tkDqthXzqFOfhsMNwaiHtxupE5C9s11lxp5tdfOZtVOv+6upovEL1v51IzJfN6X0hd8LritILvhdkFoNx6LtJ1QLrL+7uszmt9sgNzGQ0dmLuYyLdr7tILyYtL5ukIAtuHNfpt7Nt5o4NBxW5t7Zr0tP5qu1whs0tkOtGYo9se1ozAYtRZoqdRuoFdUlsJd1uv/x5zqQMH+old1uo0dbLs7acLsldIBudNcuLlGQuoOdG8Ku1bT3edmru+d7uooJers8JHU0MoWDsWdOGPn1dXgIuqOomQYJuqNEyE1tR+omQ5ZoJ1PrTnkzrrQeWENY+cQPvOveuyYAdy1t47FahOGOH18Zn7kmOpDd7JsR12TFFN5ruEW4Fs9dKJoddsbrTNAbpRNPrsFxY3UstAWgp6YbqTdkNpTdKpsjdubttdRbsLdTuvDNpbvsNibrGathoGhtptLdcprTdXruOtSx30ND+sddl1sLdnZIOtnbqetnboVd2PWQBNbtmqkiETd7BoBt2PUGtwNpSsfpuLdSZNGdhbpStMNqtd01rG6wbtDZCZondlzoXdDNoXd3NtHde7t3dXVtY+C1o6tE7r9da7oWta5rPdOtuXdKpw9dm7rnkabrvdy5uVOG5rddqLpwxo7ptdC7s1ts7vLNMbvYNYP2Pd7KSA9A7r9dj2H+d7A37kqpqbY37qu1zp0tdx2sndNXSQ9IHqF1yKNddvLtNd3rqw9g7vvdxTw3N1pv8IJZtw9YJq5dwLt5NuHqTNMHqJWY3Q1N9PX6tVHvRNuHvZtLHop6TJppwI1vI9mQPo2bHoR2NHsAN3pqY9CO3o9tHqE98Hoo9I7tI9n1uKevbok95/Dut52rw9UiGO11VuTyqHo7dEnqC5KnvO1i7uOtIVnsN6Hvu1uppy4q1qw9rYKk9WnsVNonpiN4nuO1Ztt5QWHrVtMpvO1CttjNrnolNRHt3ucrtc9GZqM90tuFNDp0Y9Enu3x6hvKs0po5NsFxI9IXo3NHHvX195y890tuXNQXu+N9Jtz2yXrpmBtpC9FJuJNgVl/dTnqNtIXpA9NHos9kPyQ94HvM9G5og90Yg21bWqC1emum1XWuzEtXvG122qIEu2pq9c2pc1dXoG1DXs61NYm61XXv81rXrK1U2v69L4kG9LWvm1PXsm1fXtW1TXoBoLXr61bXqtoHXq0162qG92WpG97WrG983oG9zXs29vWps1E2uW1HWr29E3oO9U3u6923vq9XmvG92atm1V3uG9y3tG9c3uG1a2oTQJWpu9vXru953oe9G3qe9W3pe9O3re9nXsB9R3rc1J3p21Z3ve9C3t81h3s21KWtO9u3th9+3sW9CPpm9yPtB963s+9Y2uB9t3oK1YPtG103u+9s3t+9qPou96PvB9iPqh97Xph9RPp6AX3vx9P3sJ9OPqW9x3pW9fpDW9Pmsy1GPtJ9WPvJ9A9ACAFUoWZ0LOOJodyjV7KpFVsass+XKtsVEqtfVD4NIqe6uSqsquFVQ6EGVcvpDVcPpnmYbCawqhz/o7Vj6pSjX3V7NxI1k9qho1MLZG5k319F6oQ1bGpNJkZpdgBvsN1xNKfV9vt/VuTObYzvspGTvu3Zxtxo1xLwBNPvsxZu+pD9Afo99tGtLOwfv99LOxj9RvN7Ggfr85Kwkt9C0PINCGCpuSfrjJXxtt9ofqSMPeIhuWfrfaHnTy4+GNZMvjWDt9o31AXdyHVAmrDJI2iYKlIxaRjfrx61fqzV5vsHWGOhb9XUzCBpfvxabfqL9X/R4EJ7NQBJfv0drfrLuCUw79p0iiiiXLkarZL79E/pr9/God9UjTix3fr4aKvUr9MtQH9kfpmm3mMc6ZfoX94/qr9k/ufa/3qH9BVxH9801n9K2MRqu/sw1dfoCmcQP1Y7gJf9X9NP9y/sk1T/p8+StnZRmrKZtw2liOD/tY1nvv7hhm3OuX4NbWkAf79Z/pSW5vvSmf/ugO0IjCBQAdgDX/siWCAaLpxlixamrPf90CwuaIAbN9P/sQDlCzf9XVWC5O/rgDBSywDqAfEmeAYoDoDPv91AfcaF/pcBEAZdM7gMADlAaUaRAZjO5vqGYgruJp5KNZMlFwCVRQEEpbAbNOWyzDUWx0pOePhUVEgcH9OtLSeTbGoOWbrQG4gajpH3pUDefTkD/3SsCWgckDHfo0Dvp3UDwi0ZQRgeUDwSO1msgfpRKvWV5hGqUDe/rCJTFyFk9gc18VgZcDpk0StUKECZhzwN5rJkFufAdrVJAYdJFw03hgQfLVVAYwDU/rCD8xIiDHLXCDzI3QD7fviDiTMHWvE18D9xxTGIQbA1q/oTEoDu2Mx7OSDQCKX9aQYKDOCGyDehyyDRQdAR5QesD16oSD9OBKDzQbKDn/oqDYAcKDGQZaDkQcARcIo6DjQZNJkFuaNlIwxdozO/V3gbiGF4lW2cxMyBPKwj9j/sqDQxMANCwa7RLRoTuQwZAaYZib19pMOJCwcmDSwa6D+GWLNE4zcGEQV6NdvqODUfs12dzvHx2EPCdUu01OWwduDndoUhUhqeDUZxeDJwfttLbJODQxsl2mwamD8LP/u7TgOJQpzBDgweBDKxPu1fsJGGk/XshzAdiD5/vN9x9R/IiRICGsIYCJUIeuDAwxIqcId1G4DXRDmizyDtfuWDBuqFOF1CMW4xLiawAZYDOPphDJFSpDHQ0pDApoaD0IcFeTIbn9/uyJDQzRJD9IZ595VP/uTDADB92pFDMQc6DNwaGovIY1R1IcMVgYmzGEoe+DQxOukCoblDqoeA1SoY5D+Vw1DVGvhDZDhCJvAYFDnqphGOZyLxhIflDmoaNDyIfgDP/rRDn63EhMofC5uQeNDCvp1DJ9MDuFodZDYuI6KNoZoDdoZpDouN52gYc2JwQddDOgc5DHoaQhXoYC2pzKRDkoaa2m6pvxHLUYdNYzQWpIZX9xwYCmSYdGYx7NTD7LH5DfodYDtAZzDploTGezoLDqQeVD4sPGV5+JhhkGtzDVYe1DzLWPx2T0Lp++MWxWodxDl23B1dYdcmvYc7D1oYTDl2zgefYbwD6arLDXYdADUofM+aP3qxKAYHDlLinDxAfJDFYQ0dnAZTDVbRWRV/wzD3/tXDBDqemvEwPDYYB3D4YZ19xN3XDwXIG26zpPDTYe7DF4fSYuAexuN4cz0y4f4DJAan13DEAex4Y/9b4dCD+4a3D+mQ/VL4fYuQ4erDa4fSYd6uxul4d/phAbPDaPqUxf/qgjbrxfDsEfjD4EecyibyrRzfrOpxtyLDDIZy6jSOOp+a2nakpLwjw4YMVMX0H+bMMwjTq07uFEehBNdIOhmSIHW2oHojyoZAmqxqU2CYQUtltyR2tAbJdjONnDN2oqetAZ6Z1W1bDVX0NJKIaf9nEZj83Ef1uZCLTVokdkjME3ZSTLJPhrOr4jpzzEj6kbyxrYaWNTpLJDWYbkjLviEjpkYy+0kdtDq4bFIsbwkjjWOUjS8KkDO9w0dKQcx2gEc0k4J13DmAdUjK7nZSwmtjuDnt/BcEfwjgoYkBrCLcjRd2+darXZD94YkBrkcc97kYijiUZxD04dR2hi0B2LvMcyQ3WCj6EebD71yXuk2wUjhUdGRXkfgjlPvSjJBpg0xUdAd/0RdDoUYNVUt0nWDx1h2ENByjZUYajboeZaB+wS63HLgiu+qwsQIbijqQJyWjtjSmPUbGjVwbSj9N131aCJPOu+v9JU0ZXDWYfWyQgcWj1XNvZ60cWD00fqpS+yIeiumKW1JLAj+UZuWTprJVCr0aW50dSjy0ZnDq9S06+0fvt+RqOjIUYYjX/SukWnXEFp0cuj8gr/D+QZWjiVC39l0OFA90ZZm3kbiD5Ib+VIMfwB6zuejeUeGjHVLSelnOmZMMZ+jx0fhjElwsDEaowG4JkWaYYc6jEYcDeaTzNR+nxUciGLRjO0YgOwi1EDIN3Wd1MdijFMYEx1zrq2aUwPDdMeuj74YAjRMbLD14dkuk4fJjN0edGprUFkZmJExjSzZjv0eMjt0fixgskP2023yN4sf5jHMZWj0sc22CYOKWxMfpjAsfG2Yse5j72x1jZMZej1YcbRknUuhM/pNjd4YZjT9SmNn7VH9rZP8Q7Mf/D/0etj69VNjikPtjEsczDt0dimWnUnu8/vUu7scVjjsa9jY/t9jkZNG6AccNjJ0bDJcQMpkTfv/JuSMDjf0eDjo3VjjgfxjjWEIdjScZmm5/HtjWDTiBEcbhjlsZy6SgMcxrdN3upcfIjHEeF5k/SIxUQtfZXDIhuHIlN9SsZnDR8r0tDcYUFTMY7jqZybjHEe4gtUY7jy4xHdLcT3Vvcajj8QrDANcdsBrvKZjQ5DrGY8fRj24x2Dep3gmw8f1ZxtwXjRcb/VGjpUSvM0Ddu8c1jLcaBO+8YpBe8b3IrAo9je4f+jfkahoTTLPmJ8aaZl8Z8jEMZvj61kuhr8dMYj8cTjksePjjyvwxY5p+uXXzBjMkZfjHkdFeZ8cATFsa1jGMx3j8xoJJqgIixkccXjYytgTtccZJJ8aIxT8fBjK0eKeNkzvhNz3z9aqqQTW8aspYHXEc5AKC0ZaqeVpNWAT1kZwTlCct9FCYo95CagTR8cMpuhzNWkn39s/qzpD+MfPDcQwYTMjBoFuo24TQibxjr0cv2ZCZGxyEK7dw1FPDfCYQj7CdkTMqJMpNkwNjhcegTAiZreKiYeDkh3UTNCfKjzkZQT6TGBeqqFYRrlNYTQcaBOl4fiZnBrjqIrI0TbCYxm5if0BpYJcT2rL0qtCf9DoCZsTpxw8jFicPjViYWBgbsFZ6CZQ8oMcMTHfqjuoScga0SewZxCc0TKByY14lLCTQLwiTCiYqjCwOSTtidVQISdcTmcZ/j7CbA6aOwUhxSaxmWCZAT9CYo9JSewhsiZrNliazjRSaPuPqwIToMyATkSbtDgifQ+C0NET3SYaThSd0uNbx1URi16T0OE9ZniY6T5IasJ3MyYTsiaOm/Sc9jmgy6TYyaYTYHWGTCyavjt0dwTMydUT3M0LDEibQaF/z1Ul0KOTn8fTDkyf+j3ppYOJydo9zyXOTGSaMTIDVOTGqFljqR1uTfMYSTTidmO6hJDQNycANvyY2Tz8cuTPyZsF5/3eTtLO/jiyfWZqqubxedX+TCSoKTUKaBxjKoRTHUJRTEKc+TQSY7JGDVhTszowaGKccTWKagpslqyjiBFqNoEcxTjSevhshu1dbtwbV5UMRTmyf/G9KaFdB93X1bOsZTQKdbjlEj9RHKaDu7Kf4UFSboT3KZZTrxHwTmEi7VpFV4TBye3GoqYIe8EzJTYCw6jMqZHVvKYt598PX1V6kBT2CZFTkqa1TbKb9R+qc5TOqeZTeqc5WJ8MNTRR0hTTKdXhZqfZ5zpjNTGmMpTAyeJTRHIVTmqYF2gSapTSCMtTjGP5TlqdbO61S8TxYdUjoqa0pbKdkNm2mVTfcbDTRXItT8T10pzqaRTPqYTTd4MVTN9FyjBiYeTJGrqgkadw18acqs0afHj52rA6N7B6TNb1gI7SezTnSYo9Zad2TCFSrTKqbMGpaaYZMif26KdWtTXKaWTFabcFIidrTOAqFT3iaqTYHSkhtSYS6iIazTTaduDkkOxDbacEJXqZdTsw2WTORC4TNb1HTxqcqTWydGTK6frTM7X2T4Ec6U6i04WbmxYhHtH3TxadUsxDupdhF1PTl2o3TwqavOV6ePTq7KfTKOvvTQ6alj3ZtPKgDFXZt6bfTg6ZDTq4dcuBxWPZwGevTC6eTT+GxXeZ6cIueH3Az76cAzysbAzz6eou0GePTAGYIjck2Qzb6dXZcGbvTGGbCjIkxytN6FDjhQeWqfyvSTU6aqDVI1HkmdJ/t76u1Tm6cc+NGZdBdGaMOFbKTTNqZ8D7ANJsgD2ZGN6ATjnGa7TjkxYzqhLIzCkwpThKe9TRGeudDGaSDsmf5Q9yaozqtRYzfUeoz5GdTjCGcwzyzx4zeJHkz+LM0zBGc9VfExIVApwCBCmf40Rma6jZFMrV7pIikfaqipVmYJjwENszlTIDqwMejJEGa4zPgIszbmYL09GdLUWmcIzyrWMhN6CeRLFJIVIuicz/CZGjtmfCz5mYCzW2KCzxmY8zo1Hiz7mYszUWc7TJqaa5tmbfqCWfYzWWaEzOWe4z+LLDMnr34zuLUbT4Ecqzn5yi+hpAdhMOEYzD6ZEz5GbRgFWdkz7WeazH6eYzZWbLGm8Laz/Wa8zwme4zg2eYpkrVqzMigN2wae0zIrQazr7h12bGcoB1WYvTk2a6z8mcGzNCKDTFyaljxGYIO9WZ4z5We6ziGaljoWYIOnr1SzWYJWzyCZszuv08562QLVHyakzi6ZCzfaoP2rXPoz72eOzs2f8zjWdeTGWc+zaJOSz1mfhMm0LZhZ2fJaSmfAjEObIjgF0BzFYOiziiZdZnWcfN7rJRzIiu2z1adXDMOdO+BrMBzGOYmTWOaQzx4JrMN6dD6wl2KzTGYs2TEbqRt5xYhpOeGzJWaXZJOfuDJ6dD68+MpzLWbqOpXumpn8hZzHOeezkGeVaX6bhwSQv5kNOcNI02Z2z42NnWMuL5zLEMlz32eCz3wNbBw5NQzqubrmwOeczIrWAzauYaxCuaAFhOeUzDgF1zdmfFzBubKR2WapzdRwNzBSt/TPS0tznOZ6z1OY1zdudQztucozB6ePBURNgzs6wKViOcyTNuZXJLSZwQIuZKmSueMzwGfDzdOZXJJdJmzyuawzx4KOzt51bB0ea1zMWeFzSecVm7ueDz12ZITOuay53trZz1MSLTN2flzyjqi+IucRIpefzzfOf4dleZpzjDojzIOdDzhef9BuGa/KVVnTzSOeZz9Oc9TxedRtzee1zdebfNX4JFzSNqHzGeZVzipobzpXv35TuZOzMueR1Deb7zTqcFz3mcZjAIbxS11Om2xRkN5B5JezL5zfV2b03DW+ZPzxJMeTG6qXRasZRt/zV9Vv6K5zPmf4mjjhDe1+ZUj2OaHZ6RvBzsjJfzTkYQD8aJVhnGvMzI8O3zB+aFzm1L3zO6hBue+eJ0AecvzMNRgL9AexuH4zco4ifAjHTEPG6V3vVKBdgLVucfzjMcgLy+03DKBagLjOetzlMf2tqBbSxBI1fDeBedzD4clKbMM/Dn0LQLF6eYLwByYLVsI4Lk+Z7zjMYzh3Bc3D/BdwLC+Z+zred6hSDPtz2SmhhcBYQDIuc1GZOakL9UeNz+WM4qQLJzzUhelTXufELBMPVzqhc0LF6bkLdlpjzQ03PTZebELnFWGG6hbcephdrz5haGmgD2Aziox4LgeeZz4hciFVhcWm+hbML4udbB2xwULcLlYL3hZNzNOc49/hfzY/gZkLJAeAzoReMLxzyULWhZnT/gY7zjtniLBhZCLTjoHz9nlSLQRZUL49Gq2IucLgzhfgLPhZnTAweSLN9EcDdBcXzLudKLoGfSLAwciLQGd9mNSS3OjeatTIhYTzXZ2aL7kHyLbReaOHRcjz3RfNTDWOIdPRaKLshbaL9qdbzLELGLZBfwLmebEpUxZKLYC2yLthZ8LUltaLfH3cDcxfoLrhdktmxY2L4xaiLheZ2WuGdny/RfXzI2aQRSfJUp/qfXhPGokxLec+am6tAL7qZuL11P4joaf2hbLS+uzBryGEOMPz242ikSYV+L3xd/zF+ZzTVYwtGd+fTuwJbU+YBY3zU1xVtBJiALiTQrD9fI+LOkeOLxDtJmsRZwDNecSTmeZxLoKckL3DECLaxeCLxJeCtbm2JLBKcnTXuZYhuJcyL0ODpLmOeULwGaZL5ReMsrJaNzWhcfDY+YFZoKcaLxOdbBnJfVz/JaOLTRdFLJJfFLQL3JLiSfZ9kPs59IlF214erH9wdsPq6cY1L4xpwjLnqgaZob1L6pYmFDPvwATPo59r3vJ9apdPO1/rEt6/vht4xoP9i/ohNn6yUtVtWv9bwsIzipeS1tPtW9MPu51Wonf9AeoDLFAYntpAbZooZewDLJf+1wZaBe6opNLDwBJ9zPrJ9BWv9LkZY3DAU24DVhpjL24f/F2ZZwD+erDL+ZY3lbPr59SZYF9KZbWggVlUBIkrlgfioGq8woTkTNtLIowtrLMRpDQxrvjLZpaVLFpYrLoWR6DfjJUzUQdPN+yCiDSpr7LIyTHLWgJGSGTw9LRWsZ9ePvNLIPstLg5f6DqeqnLrGTXL1QcIRK5dwRBZdKDeE1nLI2vnLiZcXLBPqG13OvtDOyQ5NIYa0G15axDousvLWgyBd+Ie+qh5Y+9Xpbq1PZfPLQxNZDLnsfLTDBVDHodPdpobiad5d/LcZZLL1Psx90PpR9F5ZDDaodBduochtl5ZPZqpvgrAGp/LZoZ4Yb5ZizH5cW1X5ZkAcFeFD5DMwrfoI1NN5ZZxgFegkeVoN1XIYjiOFd4LeFa21BFa4A/pfzDbYdzL6JeTD2YYYGlJprDDYYox2NQErHswYrLhdx9J5e7LS5d7LWolHDglfBQi4bXLigjTDnFY7DDepkrc4Y7LkFeJ913rLLMFbe9bFf8THOmxql4azLP4dMrTMfTLNYcvDLMFErF/qYrSPr0ry5ZrDqEejLP4dDLzBZgDOsogjsZdzLP4arItlak1pZdPLLPu/L14wSjSprCr/kZ6FK93ajDZcGjRUbirHkZSDAVdrE9lZ9LXPr9LXLNir7wuyjCVZyrJUde2nQuvGVUbY47LSyrmUeLLnpaCrklbPLhFfvt30cQw9Vb2jVzqejEasejH0Y/tDVaQlnZYXLNVZCrdVelSiMbarg1ZV6jVelSKMbGrkMb9Bvepxjn6yeFPVYkr3peVLGSFVL2NS5jalZ6ddMdkxvMeFNFYVpjddprD61f2FC1Z0rwVeTL35YJq+sY+1sAMLoGsa1m8sYOrKsZH411bqVwseNLWlePLp1b6r51YGr3sfNjtpZV6L7udjtiK4t/sZ4Izpeq681Y+rppd6rS1ZYrwgCtLOcfBrOpfjjXFvTjQNZTj97v1LNscqrc5Zhri1c/LUlYurI6FUBVh3LRJ8bJr4nQfjQhrATp8YINsCdeoKVcm92lee9Z1fLLxNYATMjAlm5aNQT/Btpr5+tyTe5AFrnNdMYPMyZrl3pZrQPrZrjld7L2yfDW3HrwTpZuWTLCYk9fYKkgqnsITpQHFrVPslrEPrhrRNYGr0ybETWHqkTgXtGTpZFy9zCcWtRtdMYMmW1r8Pqgr/PplrHNcMrOnrMTcdTdr8VcWE8+o/jRNVUNMEahrVVcdrulbp9sFfJrs9kitaAKyqkdbiTntfPJ3Jd71Itb9r9td59wdelrodf0rx2rKTZtZre9Sfk9yH0atctb6Tqtdwp71aDrutZp9y1cywq1aU9RtjdtRdZWTJtYoDZVZLTzdci9FHvWTKdce9FdegrGdacrrdVVVZNlI1t8Yf1VyZkYDepLhGDSHrrqRRTSmi7rAPp7rTtb7rvZcnrODWqNY9ZGcCzpRTNTpnrqqv9NrqXhTdtZOrrNe+r7NbqrdUDVTdEtzTJKYbLcqdV1F9dqNZOofrmloelx9alrp9edr59cokshv1To+ktTaxufrbO2ir39a/KRFuvrP4Igr5dc+rJ9f1rtVdYrf9fieWlvAbuAiQbIDbdTOVfTTqoNvrHqeclb9b1rhNbgbCNdH0eabKrgDZnJwDcwbPDyGFyDcUp2DZIbr9ehrCZa+rsDf6r8DdbrUhctrLaa18GtZEeRntkTdaZLrHDdxrR5fxrzDYIbrDaIbtdcXa7ddkTO6cEbdkPI9I6c4WPDbshmlagbojZgb4jZ+rbDcXmwVhgzXlcPTADDXLhjcXGZ2t0bJtDMbIuZgz89fErYjfwrBtZ0b2GcsbaGdt1+WMCOYdtyL4cWMbx4OvTNjbSrVdcDgNda0Bx0OXN+yA0z97rCbCk3U9oWUSz0TZHL7GdDLk2fBkKmfCbvluCbAmejLe2Z2oRpD8b1VZYb2jckbw4kSzdaBnOtmZKbD2ZIVgkvWyiWaqbRTfYzoaFybadY/ry9YurJmZIzVurqb7TdzLl2cSohRrabaWb6bMOeOgjTcXrIdd9LYdb7LfMMatkTYWGZjbWzHBviby2dzL82dMUfTfmbmTpmb+2eWbh2aGzKmb6z7zBGb0Dffr+TbPrOjZ6b6uO6bb2bRJpTd1+alfObj1fubyJkObGjeObWjdObhTZxzagJnO+Oc31nTbojlzcezyZv6bkOeEb75bybbzc/rjjZZzlIuCLfeZhb5jbODuZeAzowYMb0LcMleDcrr8Nb21sLZ6WG7s8bpZKRb3ufVtCLYLufTZFz5R2ebTDc0b9jcIb2LfxbpeV+b5LfXU5uZ6W2IuWLpV1r19LZ9zlLa7LJzchbhTbDzDbXZb50WcbqeauNOLZ/ILZolbIHLZlGLd7r4zczrwRbP1HTarz3tpZbzHTJbheZd1SreMBDDfUbVLdebNLYkbdLfHznqeFb0O01bc+ZVbNOYnzqLdXz6LcYbvLYhbLTYGrFYUILhdSErMvyX1braVG3rYwLjBd8rWWW4LPLdhrzrYVbTlYx5NBb9bXBdILxlcwLnLfYLX2mxqQhZK0IbYJrRrYKbJrePBN7Fu1JLfNGubcMLWjnNb8hdRb2heq9jrdDbGbfebWbZYhMo2jLjhaMLxbcoN0rcWm3jdrbdlrTbdjeYrDjYFbx4L8LdrYYGw5YKLiUfNbMRdHbtjU7b1Le7btLf9Lw7bhF47fnbOrbyLhLZYhhRYHbHAzUbeNYNb+Darb/LZrb5KcZbQxa0tlJYoNmxpbbYqYLbkxeOrFbfTb07eNbs7ZOLl7a2LZ7bcbmlsPbixffboDfLb+radbu7ZdbULcZLByEJbVJetbtJYLLIuepWK7ayqHIrlbS9fDb0lY5Li1tfbZJcJbegOCt5rdxLGHd15Kda65vAAgALAGSAvAHoAmABwABaAAVUGdtJVasIuAVLHRfrS9zNHejxcoAvEjWcVDFTXo7x0KSLvarmdiVBCeGEakoaWd4mzHcoBpi3Y7KkzZhhdiJZLaqvqonciZ5IO47UfxtaMne7VNEf47yncU7F6aE7s4B7VAdU07mU3hhfcdhd6rmnj9E3757Qek748evGOfunV191IM+C307FnYTkOfqRMS6ts7znfU73hcs7z1Gs7UUac7ZnbY7bBaYj7n2yukvu1VGvquVQyuDVSqqeLBNU5+tGfe2nP2Fq7nYpLQOV4ZyEdaECXcFT/nZyL+fEHCX4KF+iXcF64EZy7mKjy7BzTkzE03o7vDOpLq7JeLORHAmBnbfVVVCyj4rWr5+SfM7HnYQmIBbq71HY9C3XcK7DnZa7o1Gq7qGZeLTXaS7hJZjqF3W5aINwxJQ6PG7XybVZpUygDZXZhE83aJT+OJkBcOI8JX1UNDdHeLTeKR271BxMoGDV27GzSNjuYYpceC2O7l3bW70mafq13cGuV3eMRVob27QRYO7h4wCjYg23YSnP67b3Yu7SYOf6D3aFhkx3O7YnDE1cJ2OhmaZcaRsaB74PbpWBmdDO7XYpLbLTjq0Gr3x/+Je7Z3f27XwiwOctLUT9Xex7hruY1CBLSexPaR7E3e5ppPa27ImrSemPbgaRsZx74a3QJ7JPQ1FXcJ7gpNZ7bhwBWrPfJ7C3crJLPfzTNPc1rwXf27aHzh7JPcITPGqT9wvtWQGlPCJpNkpZMmEKmCfs8TJTKeLcFXl7iI2YmNzIV7/frV7w+eduBKN17NnZ17Bxr172ganz24yV7GSWa7RvbN7rfv17lvduu1vdsOLnZ17WvYd7Fvd4Lcvd4ZeCKPB8vft7Vfsd73vefuAffVT2jVN7t714DwfbErZLKN7HvYnVdvaj7hAZj7xRZ8+nKAu8XAYz7p3ZoTqfYQD/N3pw1WwL7VGp39effiD6LML7WfdYyuQbL7q4eL75GoAD2fZr7Xvdj7ivoz7fveozD4MSDQfZb7afa0BSRiSY8mZn5g/Z77xgZIDb9r077gLpeCnc97Y/Zsj0jXSBmrOn7Unej7vfYQDE/YrWCYw37M/dH7RXcC7i/YDqkiDEm4ydrwa/btDwBki2vOwv7O7HvzZhGrDFAMv7HQwNu2xGzm9/ev7VnFxTBuoNu8uAJ7QRaobDDyf7QSSxjvPfW7bAKC5GIfOq2npF7f/ZXc/JzT9NrZ4Dr3YpLFamokBxLwtL/du7gJZNJczo/7ewZwHGA9+7yA63UqA579OA5/7mA/AL+V3QHWMawa+A+AHWXeR7QmjFIqAKYH2LKQHFPae6F1GBNHWK+jIhSYD9PeLTauBt9CcBd9OfpEHFA8RLF61zYo6MsLYcYBNThcIHHA6ka8g8sGPfrEH/vpAHd3akHrvoUHuu0N1KoFWRWPb/74jkCOWBZ5DS3wiCr/cEHy6tcsQMc9JIi0UHfPZqVsjdYz+FLD9HGaMHaxYTCyib1prQgWjhuby4e/fcHamcakm0YCHd/YG7FHppwX10E5W0c0HWA5szyHxajGWaTJw2l/7yXZKALVWq2Q5ECE6Q6UHDqdnZa7YCD1DTyHTg9lTwKIUDQ/cLolQ7Z7ORbTuy7aqHlvtKHoA9iVwKKKH/KdnZNQ/iHlA5HVWkaEj4KD6HuQfAjkkccj5YYmN2kcIDMaYcjnocP70w59DhQCmH4kfdTgw/79NWemtg/yL7IV1GHO/rWHqLo2HkQby+Ew/v9aw/Mm+w/kzpTrOHVfpOHhw/6H+yAuH2w94De/b2How/tZ2yUuHOw4vTrMPkjH8JuHQw8+HhusuH9rPuHRw5oTe/dOHLw/wpwI/mH1gByLeOrMj1W2uxDw8mHF6bhHBKQRHWw5BHQaehzAI4hHGWahHfw9hHOI5mHBenxHqw8iHzw+JHhvbeHSI+OH5I9+HzE2pHmI88Tiw+LEqJYdTcDyqo6YZZHQVzZTHI8kZCw4c7w2g9D/2fZHQFa5Hgo6Pq9qOWHYo7JHHXaFHbalBLcD0sZJQG5HBdUVHeNNlHXg7Uj8uPVHv5Nb9qo4/sIo4lTSo/CHMI61H8o+wkbI+NHXRx/RAo7lHR9TTz/KbgeRH2RH9o+dHusY1T7o/FpKo4lH7o6NHo+i9H4o7dHXRytHAY/VOQY/NHR9T8+vI/DHmo/yHhvY/dtuIZHrtoJHWo9sZhkeTHIkf1HKI9d9SY4NZpTozH2Y8JHkZrzHaOYLHpY4+HhI8THlI++bKY7jHZQ5czdY7xzTY6uH/w5LHNY7yk5Y6ZHPo+y7uY47HN2S7H0I6eHLY9eHLY8rHyXa+HZfWyHn9u7Hdo+S7hvqzHrnzHHjw9WzfY9uHnpEXH44/jHezZHHE2ZnHQ49XH1Y/XH+49TH244GHIY/bDcDwtOrY5yLBkejHYw6vH/I7NHZ4/UrMscvHXR29Hc45fHd449HKAcDH9Y5aHrTwdHz1NmH7o9tHz44bH4AZNHoY/PHdZK3HkE7/HanX9HsE+HeAE60HQE5NHyE9fHqE6LHyXYMjnPaX7Go9wn348lHIE8QnO5OInCE7yapE6wn+E9NHww5on745Fp8E8AnLYemHME+wnjuwjHJE86ZHE7on4E/AjG0A1whTL7O9MkDZ9/tr7xOZbuIk9vOLd0zZq/bn7Uk+EnGcaZqQk+OcoMcknn6bRxabKEWck+SpKfbP7TRcANjo9QzgBvpwGk8MnIpdhEbrN/TWFBP7AwUsnUsZiJbeyi+GZKJEOu1L7jk7cWSZI3JYcKTJKz3N7ik6cn2I18n623B1AU9n74Eecn2Eh4RQSh8ni8N37F6bUnO/TSmyU5RpkU7SLek7FzwRZbu1488nQU5qx9Mmyn1iyKn6Yc0nhU9h6YcNynT4/Kn1ObMnmudXZgntZz+U60L1k9OL7uawoFxdz7Xk79G0U+X+CcMYpae0Cngk8YpEsDsWc7vR+iU5yLfU5KWbMJmnQ04yn00+xGY08mh/k/5hU061HejU5ddTw5xRqZanEo6vt3xzqgu06ITEk56nhTxOnwQxPhl0+ADtU4ungLvdTh0+GnEo88dyAYlTnjpV7p/YKntqboNGrrpTuermeG0+3HYVc71d4Kbco+umzd0/ijoM7qe2LkHuz04674M8p2YM7XZE6aDTUM4ZZcM5QziTSRnN/ZJDGM+YVcutcnaONgZ+05yLYONJ2DeZEt7NMVs50+Zz1U79Tuk6JnCM+S7FM80dVU6f1kM7pnUGaangvNbzqwa8wi09ZnV22p78ubguwQYJnMdRmnrjtWn6O1un3M9qWE06wnbk5UJ8s++nps2xGB/yUm0s7tIZM+S7809/HaGKVnZU4Vn9arRx13VEn3i2b76s/pnY+K+ZreZbuMRJZnL47ZnFs8mhjs8z7Qs5dn5s71DTM6tnzs6on4ucAN7Q9MnY+N2Oes+9n3vuGLYs9ouXs8Dng7IHDVvqNnefR3Dks87VSZLkbfk5TnAc9Yn652xGmc7CnE4Yjp3U5tnscPzns6aEWGc+xDEc/jnw4jjBCcG/z9c4zjNc9zncESbntbLykTc+HuCk+xHXc7ZhV0hoL3c4Mnpc9ez7c/7nQBwbnOc/QnwEMGzWE8kmbEannCQ/hMJB0dRAOZXn+M9Nn241LISoyXa9rL6ziCbOnI85qVJVbiZet23nKky5nR85tZOzd3n+FPxZ6lUXnPQ/eu586071dPvngs6Bntc7SnfbUtnuAiXDPc8yni/Vj9qGfnJ/8+HnXufnJpyL9neeLjnrc4dnQC/nDaGNAXG86vnXRcANug8anCC7VnrU7cBdOaAHHia+nUU/LnOQuTnlVglnm89ChjFNN2406CW5C9QXec/B11C45aM044Jj88kHXSsYXQHdlngAy8jac9uuW05Qbd4IEXM5MvnUw5Oni2eunchNEXDneEXOLjTT6bs200i467si8L2bKfEXSi8jHs7NI5bKa0XEcJbn08/nVQfwD+/0+3xxi/0XS88Ce3eyRM6d1xneBQsn9C9juWM9rZIM44G2C8iH/wL9ZOM/qOlCbYXVxcxnE4faaElO8XDOs/ncC+zDSozenybYiXbi9vHWsRpZ34brLv4YAXORZT1/+zSx0S98XTObzprLWOUYw9ZasXkyX5BYILO84SXlBb9h5i6fnbrwpugeBm7b6UayFS/YXbE9wx8WF5z1E+aXEAMKX8xcm7oaOfqeYfpWHS9gXBi5QDzS50mIN2H5oy8GXFi+xq4y8i5A22H5Ay9CXQy/szKnKGzaOZWXS80Pne/ZWX42fwRQBzk6iy6mXv5wUmcueOExy40XL47y4Ckx2Xbc6uX5y9rn2k3leaOfCbyBPAXOY5ALZzU2un8I+Xky8qXhvZPnV0b3nx0Nv7tM4cXfy8PGD0YTCJ84QoBy9+XoQ4R7D0bykfWeoT6M4oXz84yjkKxPOSK5iXyPdumXNc2mjRJhGQCb4XSGpmukrD/6ubBsmSdM2X+3YpXw1nxXpK4dtMK8aXJK8pX9K9ZXnS92LKByTJ4CdLB3K7prTK78XeBzOuHqj3jg9exXZ4/h6LcUB7aytNHxK/RVxyuJ7eGuqHsq9RXw/xpWaPbVXUq45X1RZA6DHuMsGq4EOCq8fJyS6IHuh1CuIwy79iPZNXZ45QHLvgb75g7wtLOIFXWS6iuKMdsTwanuj1s/v7UEFn9yQ8xDP9oVDXq8EHPq7Icfq5ODbq6DXxg+udga46GEa+1XohapNKX1QBr6Qoi4q/jnnJoy+knx5NjKFTnqq86JJRLd5+AO+j/A5RXoK8TXbl3wxKa+w0Ja9V7ea6GJMHyILoodbBpBedXRS5hDjq7ZDoobwt5S+tX6a5DX2GkY70oaZjkUnjXnReVBs8exn/q8pBaM9rXZa4N1KMcHXQxPWdkIYaXgq5Suw6/ND/u37XV5dHXJoZ5NCcGoOVa9sRka+R7R658Kw6LPXB693X0XYzX567+J65Oztra66X2Q2zX//sgaZ66/Vva7CXh1eBNEA61mdwboWq65dXm1LLdS5ClZTNrA3Py+ZXgBwg3Fc9Fjv67TX364rCoG7g3brzLdzA+vXBve2rk20AeQsc+2mG6d7CnPam08LZhErNZMRK7rXNYYnB2oxBuQXM+Dpa/QL8ZLDZ722lt9G9nXjG+o37DIFh6+po3UG7XXckxRhfR1K7rG5PXEq64HZDnyzBTPc2JfII3IfYmZi3R24km6+jPsd4XlG8Sos/qU3+a7LdT2iA3ba58pd6xk3F0ZU3sm9b78m5Rj2nParXUVU3c64XqfoPwxQmmEKJm7T7KoBnhNTJOpK5No5ry7e7TOsaZFf1c3zfyc3Hfp83QlxYHPG5CXum+fXnA8AxAW61enG8831K+UX3e21q0gNKRFG7LXLi5K2etzajVuTS3fcey3mW5S3Bmly3Mi8qOQOeZZR1q/aEW85XU1y9rBdyy36K7q3gW98jH+vL9dT35VRbifX1W7nGzPUlbxnZ63co3sXeW5rebLv+nAPPcNg25K3v1JbV/KbG3E6VzX6W4Amyk6Tno+lm3I26q3Oq7omwowTRr7ynp1gya3ywZYgW29cF7U7ERDc1mLnW423KjLO32xZnpYbHyxdy7CXh24a3FYRO34hCO392/23Jkf7jJVZe35KKnp52/W3Ca6e3P2723aKLu3oO4u3Ca78A/25u3e7V23TWb43wG6Xjz2/O3y43e3EO8B3Y675zt+dbq8iO1EuO8+3Wk5x3sejyxZTQFGiG6WX4uZx3Jbdu3hyBp3mO89VlCL19JO/xRevvp3X68p3wReJ367Lc21O8VtkO6x3ree53J03NaHXwJ3iO703ieb53ahdO3bO/53DO+i7TO8OQLO7B3dO/l3HO8OXsAKb74G9L5+k4S3GQ5rhCVITGPu3r54k5Ln2I4r7vs4yz6LKN3Cu6w362Ut39q5g32u4l3kW7RXqLrxSgoMAO33eJmhO+rhHu+j4MQ+mtnu4m3iM+D3ge6lZ33Yj3ru663Am7B70e+N3YPd93Me8u3uSsWdg6wUjw2l13Zu4Y3DnckQ2e9QR6e9t3Gu9hXpY2LhGDlXjRe7135u7z36e4r3vI5d3Au8ajzmBT9r8r8aQS5uL4vv13wM5b3OfoT3y4xeNrXa73Ne467g+/uOQe7xJCe7t3hG+0ak+9cHXi873oe/nHWLI7n+yHRZMk6b30XfSmA5lX3pya2SS+5fHT0JUnjfYWGB+9rnR+933K+7P3SG/7Mr7iwnt+/+bKe6h3/fYWzrQZn5uZif3gu9CHldI/nrk2X7Xeen3cm7YndL3ejU/eP7D28530XxIOt892XP+4APJe+g3rQk/hoB45aR/bqSxW+Gj/jaxb/pe37gs5UzgpIfnXlb/og883L7JLxt2zfYOz9ooPm0NzbseBoLu1dgdB0OurjB/LBzB8C72oDYPcB4dbX+9Cy4auuX1GfDVGy5H3eE+7xqy+imhyH2XgB9M3OmcEPUXz33kh4QP/G5kPEh7EPJ+9sOEB813D+6xem8K77Qez93ImZpxAt0iDx0MFUm+/t3UB+Y8gDzQPGK8/3xmesPPqrZh9h8BWth633G/YBX+FOQPp0+EPL47cPNA6X7ZauBXGM6wPPbbpbG/YQo+B5oL5Dv2QHPbK99tWOXczcaJMKuoPYWYLLdB7CzZjZYPXA9zLmR41d3+94ZFFjyPlh9BbM+7ELR6T8z0xZDOddPY3aRcANdgl4mGFmcGdC4gXGuBohqk7RxNEKkPffbZndMl/nPSKaPSU/aPWTLaPLdx6PLh/MP3R6GPIC5aPQpcUPSO8nZ5c5JppC7QGKC6IXic+PZM07zrZh5KPJukYpWfRoXbSf0PGs/B1mx7aPSZM2PnR4mLPDrnhHU+x2hx+ZzAs8iXwRYFnn04cnc64gKD0/dnHx62PQB4Lz85KunnWLRxe09mPku8oXIlsypAJ7+PFO813bM8xd0WyAXyK+qPS0/B1/FKznEM7uPZc+RPqh7eB2I3hnYx+2PishV1/B52PSZNxP3x+kPDC7txP6crn+3RnXhC7SLLNXb3Nx9sH6J8zzgBpeKhFzZPC5LJPXR7RxJ1WGPNK1pPrx+aPteN6PLJZWPAx5bufJ+gX3JfFP5M95Pk6/gXIp7xPPx7rO4OvmT3C/Fm1m9WPcdU+7eFzVPxq683yXZVnjdY1P+q/6PSJ9R7Mz0YpZPeBPbu812lqYNX9nokeom/TX13UqsKewMJii5ZPGEP7Oqi9ohHSybYGh9hXSnrtxEi/92nHocWQZ8QPx2t9PCO/9PmQL9PFx5rT/Z0DPJlInDHk9tPse6sp9gL8P4Z+1Wyfe73rp/zP4qeO1B/r0e3p+yGCEIAH2EIP9BA+5PqIe5d1Z/9PZZ4LP3h/jnvVOVX92Y7PODXm3DPeZOha+2xeHwHP9Z5/96RtUB/x49J10k4TFZ7o1cD2lV22MWOgcCTPEMZSNJyoXP456hPwZ7HPPCZOxi568Pue7e7gZJZLzPdWhxhxnPTydNWZ5+2xM/KvPI55XPMqSz3J2NqRj5+VP5J49Jz58IBHUJvPGg8zPqe4whfqM6UvOzZsvpvPPtwYLsZE5eq4F7jzcq6Os/ZywslsP7OZKdAvR1kyB8F7TP6lhNnc67nx4F+QnxTxwvmF/v7dXYwv6F9csBF8EHVZ8/M2nc12+2yggUZ6UPZgxovDU77TB/tovyF+O11ENwjyEIP90g7Yv52u4vnF+YvRtiEPB5+QHbNhmDCkL9RJg94vGhLkhnLN09sl7Ivf/YjPeqkthqTcUvol46WDJLzP2y/UvNq6Ivth1UvVy90vRZ/7OWl5ueckMdzhZ+/XLbCNs9DLzP3mN6b0l4ovVPwUhLF6YZy56qThBfSzzEMITLy6svnO5xcFAbsv1F7LVfl7bP367MTFAZye98Y4WmGN/PUO9dURthF3sSetPOzI8vXsdpX3DHwxuK+5LvZ5pXBK8DQoJ0CEeV7e7mV/Cy/8YKvCU/Svz6xmuhV7pWtV6qv8V54Pkq8Gul0Ng1qENfPzm9g185tQ1JM2bnTV8TVeq9oIcgc5PQ8/8vhy5avEZyO7u9x6vnV4QDfBqIZINyED5Z7mvJAZwWBDNcmy19bPIl5InW1+iv96r2vWp4vT61/D7MNS2vLx5BXDE5bPaXYCmLZ6Kz41+DPeZdwT0Bb2YY8Iev0Z9Cy1jQ0JLMYU3tA14v+yC+vf1/kzX19pO/1+DkHAx+vZbtBvq17r7KzOhvMMKhvbrOqvl2xcT9s4CmLicTR4V8gPLSFnsXu+onySeH3O19rnJZNoIjh+4Glg/+vU3YhsZN4xJdDOv32N8zBdN7f9WVVVWyN+SmjN/INzN63s9N813V7VMIL+NmHnzuZJhp5InkZt/xeS6PSVK6xvvN9d9Zl+onQt8szA1633uuCPTAt5QDkZuFv71/ovbr1OtnN83DtSL1vd5+VjvtgbsnBY/PrN6Vv5h5Nv1N6WvNKwtvIt9rnIeptv+t7tvPN8evIjuMseN7WrNK0JviJ+S7SdSemHT1G6z1xhvxt//u4t4G2JFU1v0t/dv/9zlvdgPlUll5jvH14rCJFQjvpgK7Gc9NDvUsdyY/N89eud5UvvF6gaK5JIXgxpLv5p+R7GDjbU2LxCnMXMtv+J+2MrHJOXhqqbvdF7mPUjVztCcFZOsekwcqy7Zv3ydzt+y7RTvd6p2/d8v9g96YvYcc7vfd/rvKp4Ojt7H5QfydhxBC6FP+3e3tBW0uh698i2m54+vq9YHXS99OEO9+1v897U64J49Jxk/phDt4ivge55Hag68uVq6vvnO4z3Bob2D4OqdXY96tjlRPyTw979BLp+vvFoJjX22KY5gD6NvyceAf4l7BJrHIcTyd+PvLd9DXI+K/v0D6JvEV63vFa93PsOJrXdJ8PPRKyq+qAI3rwmhKvjA7E4uD7zOC98QHWt/bvp0e3YJD4XPjdUvvFD6pzhoCNA1VSUqfXN4AAsD65CQEAAFiqAAADkOEHGRxYCMB+H3oBLACI/RWFQBAJTAA+AGfKegDxgJALMBYANI/z5R0AwAPQBbgEgcXUKfoZhRSAwAIBL+4ITxiUAgAwABgAFNYuokAAgBcABwgEANrRYiH2AwBFQBEpmPgqAKnANgM4/A4bHLwEW4+DEOkBrSVQAiXg4/uSCjsqAM0Ngn4yMAn8LgJlOE+YbuE/ObpNgollMo7rHEp0gFEsKUFEtomCKwEnx2tkn7kBVzHyRwn7NYpcBrRIn3dYdnk4+QAFmshRcidWVuE/UqlQARWBShrjukABBk0/i+nU/Hxm0+8Bh0/DkV0/3eD0+pcJx0un5nxBn5k/ReoM/pBOt10n4wtBnyTJf1i0/gwl0/xn65xypSLwysNExceAzwpcOs/ReOkAtn6twdnyLw6uPs/luLVxAYAY+LelQAySuE+/LoU/Krjc++nmU/h8H8ounzM+g2FQB+1FQBjdlQAIHl8/oIc4/vZn8/22nU+wyB8/HSAEAwgNgBxuf/LVkL0xHIBM3U0aOjQPfC/CQTrLU0SIVvJBTE09je6MXyLON3egFpbb0jsXztadPegFab4p73yUN0d68eSbbkXqt2p86cb/+LjyQHcArceTntZHbaX6y+rdUMw/5mFat2ty/IrVy/q7vnqBX5+oPtVy/VtmdqxXx3cGX4aQbbrkQgem4iUW/K+D/WKRCjVy+EN6obtBjkjqjWQS05tq/QHTkjRDaGickZjqacJWoPaIa+XybjN/DYai9eND1KUQoj/DYMiAidD0R4Tpt5DVbCdNnq/0sTpsj9fpebGgI6LDR+S5VP4a82jps23aNS8xssbsenNDDA526zdLEfx2O5iyOKx9D4ZlpiombSAxK71C3fWCatmm7U37AQ03dJiYNsu7KUdovPXfj5QFKx8FpkELfXwWsa3/4b9rXeTUdQh7Y2gS+LDQ+CgMbW+QDa2kPWxYbpbrm//Df2+7XoO+3CeSxoesczMtGnb3u0Jjh9ZAShMe6+N7Zlo3a1YEMtDTh29XE8tEQ/qrApWpmqv4b9SLZiF36O+i2xYbq33y7VDWNvMtOi+NDYoiareJ0aoSu//a6O/3RFQbkOXnWqDY2+MAUwbAIy6N29YnCDZkvqrocM4XRr3qwwNHMYW4B/rZmHbAP8mpzX1++n2RAVh9XPtI3ygbXaZlpQPVdDQ36MxEP6gcD36obJ0rZiH9Xpk03zTWqI1m+CDaR/hq6qhqHwW+8P5ADk3RtBQxma3YIJPGrWtPaTKHGMaX1dCRsvW/UdREEkxgV2EqCUIMUUx+fcpWpi34J/Ro7G1e3xbkbmQO/Udc8kb31O+TdRliCdQLqCP4jr9QVoj59SUIj38PqvFtQjtPzSc51lQb93xSuv35uqEP+Z+MdLB/eP/q/9G1Qb+3wIav345/XfA5/rZgB/+sf+/f31f6mzQy+7RFhGUX55IzI/9qwWKqGUGH5+dMRwbQv7XNiXzdx5MZvrQv5ti236F/i0Ux/Qv9Z+0vyUAAxIekIv/YScv4F/R1epjOX5kP5McV+AR51Vcv0l/MdSYODZqM4JP18a3Gxp/nt8Qcmv6DSBQZZbZDv+/qjZ1+Y0dV+cH9u+mvz9vRmL3r1rstjbtel+tPxF+71sN+Iv4K7L3xK+ACxAUQv4t//pBF/AhfKCCv+t+uF4b1BLi6NVX10SQxmt+YP2O+9odJj4Emt+zX0ZXTv+5/xv1eyXRrd/Btj++1v9HNfLUcZatLAOIv9680LwV/LX+S6wWF27Gvz9/nQVG+p2gGIdVLXrQf8yUW62Cw3h3rf5Xzzil3+N+lyKx/OX4EkoBaq/0me1iIf9kTXBfPJ5X9685nuyIyV/W0Cjy8BPTjGZc25KxSBXJWT2Yx+gyy/OI2vvXAxHQLxP2T+6BTZ+ifyFcifpz+LP/Z+NWrfnCTo9rLlwbMo38Jpjv6L+1sCL+OTXUDL3xqac1/BtVTU13N30L/uLcR+Vf4B9J30Lq4WnJ/nIar+aP1dqlf7liVf3N+y3xq09hwJ+NWiVjonQb/rS7TDHte9GUf/b+gia+SmTQftyMYF6f+1a1e37S9oicNWff0/pXfy0zldMpsXyWR+Q/zu/K39Jy7tDvXaXi2kGniH/R38hWmpMtjrTdqMtEcSbtQKu+ZbQZtn3qMxIdWxH4Nkybp4al+knalaRQRybVnbq/HtX80ICkLr4MdKD6TVMiICkya4S/HNSzdM9pQZDqEvSL/VTUpXI3xqa7jCL/iTfXZI33X/v38G+dXXN+ymtX+AH9P+dXfYTY31dr3cQr/HteRvlf0v/VO2r+N/968w/+9Cd/37/o+GJ+iC6rg1/0b+N/wCGXfzP/7CRb+ynBW+aX7Kk6P/f/JIzf+O/62+mTZbru2sSaImRG1vf0ACdZnK/rdWeZYd8rtUr/GCkw2liWTX9HtURITN9I/211eN8Y/2UJJd96TRMdePRkK2Q4df9XdQj/QL0bEVw/EACAHzz/KAD8APVtJoFLv0jre85SAOWdY780jQ//PMYrHRHQJfYd6xJrArYaax0NTehVDR0NbHF/awwZH2tOqXSePmtKuVvfGQ1gHjJNcTpYzylbGQ0gF2k/Nmd9f3LRDxduG1EA9tN+APbTao1zXxEeHgD8jQQhDV8eOhbrGQ1tAMTrSo1vHA1fLeg/bVzYAJc+az99Xy0FbHohQj8FZinfXNgZ0ysNRwk0fg9caHp8GWztVwCJwxctRwkJw0LtQwNFr2bfFZksflcAsfEqm0cJEIDe9R1fNsZDX0BvQQDt32PeAICAQyEHWt8mbU6UWd9Bj1GtJ/F0PhjdH/Fs/1a6PRtk3XWMTO8UPQndPq9z9WQ6AU8JXxaQBF8IPVh1edpo5hB/HIdI3wS/DXpmMQe/QxpRmAe/V18lEU2/X3903z2heglIAIK/AYDlHh6Ar38Ifxl/Vn9/vwrfZL8WgNjaCe1kOgWxGl86gKgFUV83f0d/FF92syzGVV93t0mA2PBABV7fGToI/wAAw4D49DTtGTp4AIlfd7dugPj6Tf8OgIZfNYC03DPbZYCmgKiNA+tLvyjfbs8XgNR1WPQadDPbAjEV/zEtRd9rgIdLG98+gMHWCP8p31P/f/8jjRZ/Y/9xjUXfVn9/gLf/Co1XRgt/T4CIhQxNOZ0ePyZOANc0QI6Yfj8RPz//Tt8HHQrfaT8Xe2hA9R1ffynfOfUhMXGdOP9k3y9VAX87gO+A6NdF/1mdd4DBxUejVL8PgN+wDL8eQPSRNkDpUhcGND959X5GFP8qdWYcLf9ydT7xQYDpQJvfAACWl3IxaT8xQIjaUa0Ic0v/RnV0kTRA3kCVgPAdUG1sQIHqZGkm33vtC0kNQPvtXwVEQIL/KT8rnSG/Sj8rgOubAepc/yzvc0Dffw3dFzcYAPQ/fUpWgL1A7kDOQLF1J19RfxPDEX8aLVqxQUDhrwBA1s0MAJBebj9YPWHNekC07T8OekCAAL3uAkDvfy/TYkD2XQjfRn9SLUpOG/8gwNjae/8gewNAuhpyMQntOhkj/zbfYXVP/1BdHYIe33pNNT8RgPrXCEChdU0/NNw+gKrA8UDHTTdLZkC1dXpAs9tzrnqAv0CeBmDAx7Ub2E2xUX99SUvfVU0ZRlCRacDQeWBA/ShVQ1jAq7VtiCpAoXVVwPj0ZMDx7mtA0cDQeVZ/OYY6fyZNScCb/zHA3UCJPQF/O39VawJAssDHYi2A8z0j/xzrAH8ZAPO1Dt9GwJfAxT8+G2j/Iz1EmXU/EL0b31A9b69vQPPA2uYYHguFAiAYX23bV1sC70ALVytP8wBBYysxXkitNcNnqE+GQNtSnRkUBNsuSRkuQNsTygMHAssgOF1+bmtDq0IgzCCJGSjfZDc30m1bCiDmPD6bcG9bhg6bOiDEXlggp3VgDjXLMXtnHEDbbnteaTWrSXszG3Yg8VtkN2OhK99BIJIzPiDAuwArGsMraheoXNsV1l+hXMsHAQ8oPpsZRhUPHetmahIVFz1yETCzGSDgXT+VDptsmDLVTc06sXUg35s9kWkyNcs+pxpZcyDW9x2oPFsOXVGoQyDTAJIzQ9sSCwibIJ5IY0JbFhUNeg8g9qxigPePEjNrqzPTEjNwOzLBd7FCW0o7WyZxcwWmP5UAoKzAv5Vfm26qJyDcyw2ge1U+mwY/RKCvK0xObJtUoOt5GuYkoI4eOKC8oO42AqCMoOONYqDOfzNxMqCyfwqg2olyoPYzfPpyoKdKch04cG0GZw8T/w2OcKk2oLgeZhZV/24eSDsN/yp7Cc0FIIzTDk0hoOCeXcCmbUvAn7U68BRhcaDpoPleKaD7C1mg7PEVwKnRMoMftXieKw0AelhBdcDApjSca00TdzwKI8CPwWRrRcC7cUXbbhEwfzZDGc5pMQfwNct5fxERAssqqEugyU1jp1S/I7Vjpwy/OV8QJne/W18QJkg/ChtvVSW/bBsvvxmdOqA9h2ENbBtGETM/DBsSiQn/Yht3gPpFXNNxwNZFd8ZxfxRgxzJfgKKrDO47tCA9Z8Yb3wTNFe5QQMRghORU3zD/MKsjgO4lQmCxgMSrO7dxP2vGJ8CzWyluRj8r6wAmRj8i9URuI/92YJ5TI/8WYI8FZECYYJFROmDKJAnfGQC6oAs/RsCxYN9/SkUxYLp5bBsGvzJgyiRuwMrfMWDo/yxgiIJ6QJU9MWDE/1aFMWCYAIJg6a58YJLlBMJMOSdnHKsu6R1mIttjYNCRQZt5iXlAAfVFZBaRSeNCoPGhHXVrFmO/VSDhk1q/aMsF1QwxDpsfYKe/EqDQ3zqPPKCg4Nc/RWQNfyc/QODjvw8bXRkY0TMbS+4Y0WtbUz84E3Nzf8DL2ydAhyCDmlwAoOd6QNsgwDFlwJ8LLP8XAOCLRt8123FzUuDuIJLg+oDOW1gHaUE+m16TS9Nc2zENA2YtbTTfDL9pmxjMTbEO4Kzg3z8vKwf0a2YPDXBQXakeLy8rPm9I305bMeD/X1+be85svzAJW696gOjLcgDmMUUrPs1HgNzbPc0gIOf9CP9n33kreN8d4JkrbeCCy162HTZF4KDRHTY+mx2dSN8Om2lOEcDR4LLOMN9tm12pQUD2UFnA7Zt9/zxbaeEYAL6A/ZBXN13/H+DffwAAn+C6P17fLQE6P12rVkxDwMfguMZEm1ODCNoXLWi+cjF4EM9/Vt9Ujx0JV8k1y3lwBbF3PRuyH8Duui8reXACQIYPeUMS2zhXYT9pm0qIKT8OmwTeNNxz9RuyRhE/eVCHdgVngWyPDDY03DTtOhCs/2/gr0DOwNCHIADYj2HEfD9n4KpDW+DSmx+g8iDLA03gh3d431A9YcQNf2uA+a4I/3TfBMJqHwVg8ygYAK+ghCY3S2fA2RCHwOurKqhABTbfYcQgPwt/PiY7/z0Q4F0DQMxyR/8zGwuoO/9OW0DwKAVOW3agKAVfmziQIIU+myukAkDujWIqRBCMELNXCXoWEIymM2FUENRAh0CbsjvWaxcWENeeF7c/EIH+GUkWEJFRYsgVKzixJJC74LdLeJC+4PJ/CsZimgrfb+Di5jvAzJCsQN9dQNssQKFceSD3NlMA8pCgP0qQrytlIOYxMxtp0gjAgmoYtl/AuwFegLEg/NE/4MCaTcDOW1L2amDakNQ/Vn9YAWmApSDHvxMQg7UzwK1mft9JoMHZC98TEJ20ApC8LkbfIZCFGTrA3Ms9Li9/euDSDAzAvC4XyTtddZDGsQpxQlsTyj2rbxtZPwp/QlsBgMJ/V1wX1muQmWBbkNyPG5CQNmuQq3lWoWQ3IqsreUCFU8l4hR0/K1oAGym5fd9cTwnjQXF3EPmFbXksxhbLKblcEPjqYFDhQPN0WFCs/3OlNuNUFWOWBFC9DFhQxrBO4LBQvmCVYRx1NuM34VKxbFCywU4A94VHeXN5TM0Z42hVAfkwUNLIWsxNAJyrKPk54KeQ3XdljTBg7PkmUJgmNXdn3xAmUzt0X1zTc3kuYOSg2Xk6G1M7Ietc0zV3AfVPO1NMahtHOy87ZWCYJm3CXmDFumSMAGCZ+W1dMiYa4XVQniNozHlQqcAF4RZggugQDGAbLoEVUIbLE1CtUP1ueJUDUJnefBYWywQmdCD7sEpg+1DPBj4lZRDqhnqgyFdxTDK9emDld29QhORUFXvOI2CE5GhVe85gGxyISTsya1rLctZB+0rLBtEIp1jQlqCmXljQlAtP4IbLS3YEIixg5y8v4TtQgt8EIiDQ/SCEIidQiZAM+3LlZ4gh5i/hGVDHOQrQhstpYV3LGtDY/lYmHKtukIomGVCnb22gD1s4KnaXR801oBjMAcxUGzbQgwd0YObQ+ykcq22IQiDgG1rQpMF+hTLQgyDiYN9dUSD60I3tVhU00NmpB3Aw0MzBU+cV0PQghOB0YOd9BbNd0MAjDFlY0NwgqBEV0JPQ7tDWywHMMBs4CEihdBoz0MKmVlCb0OhVYg8z0JGSX3VWy0k7d6Cn0MARXaVay34mRMQV0P/Q7b9iq19Q7xCqqFVMDo0Hd2laRttVowSGaMtGUC9Q1o0jEKBuJDD7oP+aeBCVQLiNXNsJEIsGYuCjEOgw9hCYc1j0R6CqRgtORhC5XjZfG7IKoOIwhJCIMPYQoB0uqRYQ77tFPWi+IG5j3zCxQZApWyowuVCqIOoQ+oYbEPZGB20bmyCGG2CC+RiweqDTrggwiTDjykxQqhBroJ4wjptJLm/6GVDyJi55INCZgz35LGCLxAXhCs1vBw5WN41vBx1QlD1DMPZMO1DDO0KOXGD6Jh1QvlCTOzdgY1D091SQjVDi4SRMGVDRrmlQ7BtuJhmgmGCl0NUXFTN0IN8wnz4p1RUtQLCwfHXg8kkyMDMbYjDBkHYQn4DosIng63kqgJUrX5Ue70fg6oZtSxHLRT5jPxibZ6gGs1SwvwNT4N+VZvY74Kd5GND7bFKmaeCuCyKwgKYJSVa3O+D5OyFbAYcRkhEAmStJO3kAmSsB+0rglrDG1Tqw1rCwsOH5G85zPlawleDh+SLcQbCkwlPgkbCssJkrOV4qINGdJMIL4IChOeDd4KTCSLD8oPu2Z/1MsOf1AMsgbnQ7eStPBnHdAMs5UNJ/TicCECvdMJteUMybUTVYCD3LHSCT82xqVlo7sIJqQD5DeVFdOhDzeXtgvVkj4Rtg1BVQykubSgthQj+w9eFnbWHEJG55Uy8rQiQBeXMQygsZ7ABbDlZKa0+w5Ixoyz4wxHCokLlQ+HDosVHhDxCCrgIQIhDvuzBw7/c6YWBwjHCmPlRw/JU/EP4LFzDXgJuyJdDlFXwQ32Yz6hYQmrCBy0RXHtY0zTewvwNsMKpGevdhMKbWATDKC2smP7DAER09IxDJO2FwtDDi7z+wjrDDEI2hKFBpcPJJOvhLmyRuaPhVUKFwgGCT5yqw16CapidQh/AM+0jQyiRSIxjQ76CaplcwnSCk0JAmQqZvDTBg1nDyJTBgnLDBBT/rQBFBUJJuEjc6GxGSUtDv62bVQSVUYMi+RKtuJnqDUp4u3QEmfKt8dyYmYPCde1jwJ1CV3EazMU1yYP3QxKtw8OZbPGD0D0SrQPDpeF9w9qwbMPB/BdCYYJimYGNIYLqg6dCYJloONXC+YS/QlwVB0Llgled0YL4/JgE5YLfSTWDFYLfSGPDFYMaza9CIgidKblDFYMk7R9CIgkARPK1dYNz+FTCg2xbIexD37BBtUfC591KEGc4n2RBtX5sEMNz+OfDJP0L+RfDBXRBtG2DpCRbIRTDw4VF1fDCVJk5wpRU5MPWyQbMyrXZwpWAT8KgRFSYkcJe2ftUEkLtw3jDSoMIPfA8OsJorPqRP0NIPWbt8gRUzD/DI/1fw2XDrqyLJPwNUEJpw1RxDDVPwz84t8MGzUMtPmwz1XfCCDjugyXlvgHMQpG5vYWnwstU2sIGubJst8LizRfDwm0htMAjLINJwtLNXEMFxXSCmMN4gpjCSlzII8hI2DzfhcQc6cIqgmN4WEJTbXFB/nTdcHBpfm3EcfFMOCOV2VlggCJ4aQVRQhxKrQlcokLkhMasjEI4WHfCPzjGTATCZrk8uS5sOL0Hg2RCj7jlw2Qj7cN/OaY8syxlwqBZ4CNYRbs5Lm35VFdxzEMRvMQjjVRNoDpsOLRu7Lyt1BUe7XMtOCIpcJk02CMGuBwibQTmjG38nrmyQjVp/B2TAq9la0FLNHcEe/ht/XO1eCJV/Yo0cRk5AuCohTm6gptDDiSiIntCnTTSHBst2K3OuYmC/mk1NBstUiNFqOIjINXVPOIj8jSVuRIjDiU/faIihTiKIuIi4HnyI6IjAO1IbfshEgMyIqxpGAztQmMwsqiUQ/sguoJHbCIjZ7F1MVg04KiEIl2Ah0I/1PoiCiNYRZhDoiNOtHIhiYJkwPZgAG37INGkb2CdQ629tYh1g9ihQzyxg/JDBFwKIoQjfMKsaUdEanSsaO3FcRjWgT8F5inRgzWB8FyLQ1vZ/HjnQnQcXtWeIW5EDtXrQma57iNHQglcniMOIsM19kOeI//EPiLeIwCZviOeISm0/iJvwBo1HXTNQglFXFC0w6yDFwOJg0b8b+3RguoZFwKHwmMhtiHswr69kSNBI1EjnX3muO3EZjSxIn8EISOQdI2F0SOxI9TCswNIqaEjSSPa5Gc4czyiPQKA2dhkIpOR2MNL9Fix4MPqOfuDLmwaNCS0zYIo9TkiNUJwNSbQNUK7HPH8eI091Sk0rGnp1UUj+yFvYKu4CiJcNQStO0KH8CUiiBTAWQvCDww0oGUjT2xVIvotgG07gpVMZSPaNMk1O0Pp1A0j7wXOLeYjhFncgCYjxdW2LOIiwjUGxOIjTFyEwuCoPp1WIp01vkLgqXu0XoP7IXu1pLTHGdPVtSOBRTo4hiKCtfoiwjSB1HojajXnbHoifHQ2I/vUzSJuJLy1KiNTtINCdSMp2Roi2ixcAztCKDSDlTtCE7RdIg/1AnUqIny08yM71PMj+9SWI+h5KdiWIiqlKyNBI4l042l5Ip/VC8NZYaY198LIdTnDX9Ql1cHDDWUMOFhDZtx0FOnDvSIyPSVNFLRYQym0eSM7nWe1UEI5IhJVeEPJTWg8+LRnIzudx7T8QwS0FyV4Qoe0VyKktPxDftS91cJDOLSYI8c02D1CtRQiyWjFTYgjX9VQgunC9yTqVA8jtoMCQoBdvEKukfnYwMJeIN0xLm3t1PqFLmxOnb1tYuEAGdsiNoM5w1hEZwMubS1Ny5VOuCws+cOAeSvURcKGmPnD9uhpfZDChpihwuaCEKKfmNx4ocPieEwi9LSdxP7DnyM5w9k4FBxnOXO0koS5I2Ss8UKswz3oNUKjnX9CgSIkeHNDuLWwvB4i0fjJFW4iJwxYom/BZtz67H4jx0yxgzWBx0yWI6CC58QEo131R0x+IhgYaRVuIgxZ0O1uIvZhpYJqIgJd+iJj9VEUeiOcA8Ij5xk6nF0jILQGw30jZlk1IyDUgg3SI1skNcJ3GXmMm5XdI/S4CiIerHEiZiJ6WF3UOiK6eVtCoxy6ZOIjbc0Uo2dYzKJqI2dY6v07Q3Fs0yPdHGzDcxm2War1wILbMWF9FWyEHazDqzVNWX4lMwO53DPUhB2apHc1zYUG6UC1P0JotEElbX0dAwqY/bQ4PXP5F7W1mEG18qNahThgiqJl+P4Dk/3bQj+0JSWmEcB1+JlukFe1O+T2A8B1hBwR3cnV8lzprNqi+YUcA4EQM/Q+dazl4HRt9UtRNSzjqOr8dSwnDcd0oGh46A4jztXLWMUglax0aXE0sPVmo2ADw0MGQSms58QgwuS1sLzWo9us+wRs+E2tB4WtrVPFBkElNVz1lBivfcqw5XjKtEKx3UPbrDINIBlw9TwY2Xx3xHVCG9Reo5z40vR0gmMxPqIyDU4inPTV3bUtAILCGJfVhwKV5I6CQDVa6I6Dh+FA6DU0ZwPOOYk0awThGI6Cpz2+o3cDqWXPBV7V0aIOrRcCgsOeoxGj+MN3Aw+FxMJGgpfDxMIRooNFxMMh1FKxMsNPNaNo5XlOo67ULBn3rAPYG4X2gnSCPhBJoybCtqPbdCwZ1qJ5o/5oywJddHV5dwMWOGKNXtS77ZOEVoIBWGe4WQNm3Zcl6jRQoresZB0xAiwtMQP26aesS4X52EGivUQayUM1bSO3oZXV4KJ3NZAFqaMFNE2j7S2SIqQssLWOVaggzTTR+bVtDw3dPM00gli/NGdNz9SemWUltTUaWWC4bzXTPCM0w5xzNXSFRkBZdMt1g6OHNV69A6InBU18izQ/daIcY6NWeRs1MZmmo5wYZ0wnNDRYHFjnNb50xDSLNYI01AxzosQN86IcWQOjP2TzozMC/UVLo5jJt8WdOLD04aWroq8DfpgOoqyF/PT/9HeCd8SCvUT0lfXbwrD1GGWuo4OiG7EtrYkt5AJ3xFuijPSp7IejjDWTqT6j9T29/DNUG7C89aEs6GTi9JV0Lgyw9F8M+KxbYdJhC62kHKyFM6LWTK6CQXjwtH1dC6IhqKKihTn0WeOjlymLomyY3qKjwqWoWXSkTZOjt6KETeaivqnWokzERnBfo8+NyPQXo55IaPSEIrPlu6NEIgeiMGkr1HfFr6NHo+VRQGL7o8esp6OVXMCid8R4aeBjRkFVVJBiwgTuTLD08LXQY1Wtr6PmoqO8gGVe1FiF2Fl3A6ei2aI5xDq9xaOmPGFsWaLQuGf9YJjDtC1tNXkldaGjVux1dNXlqdFoYw6itqJpIHajaGKBuaJsozQbhAf9462RuHV0DeXQeHV0c/SJNGf9thg0KPADVoQeovACWoPMdNJJ4lTeov/93PmQA2P5UaLkYtXcHaNf/XFDh/w2OT8idXQtJSGiZ/yY5Mxj5/3N5EGjl/2eOYk0oQJ2GIv9VO1Ow+k1lnA+onqCJSQvtHqDuO2UYhxiFGLag5pdZGICY86j7GLB7cRjJXT3zON0ZFht9HG1omJzhIRiWFX2onV0WoI5omf9qWU2ZZJjMsPWoso1eaPb/IV4yMA5NMUhCszyYnDVSf1LyGgtWjVLyGX5QGKP3BCiNiRc3a6tdOxc3AssLxDfSMQjWmMoBeKDSoLRgLpjuJh6YwqDCMkPbKKD+mNRbYZiwkIk7LTlnG22GSedUWynPGZjxcyd5C5tZmLfSdhDNEXOzDyCZflWYrtUDBxignAs1oK53Ggs8MLsgrMErIPUHGAiLIN2YcpCxmNDLU8ClYBgIoWiTmPKQkA912S1mZ5iArRrfchJRkITw71tRoIrwgZD192ZbZpDDmIaQhailmPurFZiQWOpZMFjmkJ33SFjNmLhYrTkXq1XQsUkBkMFJBOACy01gQ5iMWMSPK9dUWMazeBCYzBl+OJtCWJqmBiDYYSjAJFilcO2/Amp0IL26cpCZ4XHw8pD350AQ7HEF8KeY5tUp8IJqerDOWNfJDrCeWImQltCnmM/QvSCucOdfLljWcJfw25ju1WjLUyCz8OurC5jOsKsCO/D621HVThhL22jQx14FmNZwo5iFqNKwz18/8IOQvvdcjwTnQBFFCNlYyKYzWNXgi1iQWMWOAXCBkPIzEJEhWNlw3pDTcItNLlipcNGQ6GiFcIGQpnDDEMOGWXCRWJALZXDykI1Yl9ttiE8GPH8Cagpw5Rs6alM7JCCUrDphfljiqUKtOmp4lSItLli4vHi6J5igsL9Yq1jkjBdYqKCSXUHZXCCi2P3yHVDE9X3yOHDoyxJsUtia2PJdDJEQDGrY2R1j9QOQ/4lpXX3yVRim4NkZIy0vK0DPdVxOWybYOVC1K3T9NT5NWyig93EwoMARYSD5zQySFVjx2LFYphEM+x3w0xlCqLyg4Aid8I6YiiZoy03YoxVbCNdYpCCWflYybgj6GgJZKwiSCOJZPdiioIvYs9ir2JO/Zn8xJjZbNn8M+0ow8yhm1XhbawjC1m3Y7HCAMLPYrfM6WJt/Z7D6ll1/S3d663Fw/9jdf34LRtDdfwD3eaCzfztwmP964SbWa00wOIawgooM+3TY8LkmsI6bcRxhFTMbeq4W0Ww4liZFbU5/CGjucKfYwAi92OhLQdZGmIt+Lasyf1vY47Dmyz8DPDj6cLo4k9ls+xaY11izsJ3YhnCz2IqgidiSoOAI4SC4rlimb2DbOwE4nY8vWNvfbhF0OK6YiUkxaIJPTLCX8M8uBuE1ywTg/5p2MKaaE6j44ItBMG4dOORpMG4umOkJf+YdjwZYkzjFZH4LWJjG5kOo7BDYeyXdSTjfUMnLYbQvUIOwtIdYEUKg5QZpqKYRL1CPYJIImKjOfyd5MUhOOLxJJT492M75XXA5f2D3CLinf3BJbo1V3g6wkGj0WNz+DP8+1SA46TkJWI5NXA9AaJYPKDj3oVWhKukeoPy4xciJ0mnLVP99+1Q4xIFROJV/KKCU1Sd/SJjjWL8BX1CPf3yY4jiDNnl7cJiDNjEw/xiDNnLQ5RiemPVcMri1eQxonrjtwmS9B4CVYQdondD4aKd/aqljGN1/KSDKcJt/GflFuN1/TzDAWPRxFCD1uOC3Vrp6TXC6Vrotf2bYwlC3CPXhYuCCH1NMaX8giUTfSHV1vgJMOLinoNu45DjdOJwom39pCSOQiT03Pje45jJ5GIqkMCDHQAggmusU3HeLBL9Whla7ch0U3AcvalCdZRb5UztTzVd+MV5RqMsSEAsjuJiQdAVnjn+1SxIWIKxQqHjbEPRQ6cAceLZ5TfUMeIUmU6j34mqXLbEKYgKOX05CePx4qnj/xSJ4gJFseLr+eFC8eMW6Ht8ztVR4xn989UR4rxDCjTh4wMZU9Wh4v5CQv3w4vashXxB47AVB4MB4/tpjWKl4kn8JX1EFVwVSf1URbQUZeM+OXH8hX2uwO/8Qv3FuIIUNeKD/BNiGX27GCRFDeMBgpViTeIXmB5UGX3nQlJpEX2t4npFVXwLQ0gZOXyT2Je41v19Q7VswWHQg6LiCvximULjNQJ+JZyiDdVXwqRj0XSBufsDfkyCGIF15eybzdF0dUIDfWtBM2MD4raggsOTA43pGoHoY81DsaMz449sgJhAMYk0BdQ0YmsDE+OS9Uf4uhhzAhbjx/V7A/JU9aKX5HMDV8JW4s806YRBomdi7GKLNT+E/qMzAzn5tGOYyYflhuMTAgbiizS749jhIwMKOePiW+P+aC6jMoJiwY9852SBuMpjwhT04wU0xMPM48645+JotTn5YmKg1aoYGaM8/CwZ3PToZRzi+TSkg+d0uwPiY0F16uPHdZIZPOPrAi4jM4WtNOoZB1lLNGEioGhv44AiY/xVneLxi6JzhAc0uC0JIsujE2J/4nXtV+mO1E9ie+gk9E+dHsNl4tvcQfwV414tDDXfiImiG+PfiYo1LGJu+Xzsl9SbiAASrePT3Dvibvj19bvjNYmORQviUXxlGWTCG9UpifATh+M1iYuFuuMwEzjCQv1zQtFYQvwwuRfiUX1d6bTiGX1g9d5ZmBJW7W9934jVQoTCIolig8x1KERx3LxiUXzJ3dOkIfz8AizDpBNBuXAShBIy7bUt34l+oq78EBLFeUrZ4BNDQ9zCUXycPJATL4JVhDASUpnDYhl8IuLL46V9FmRcYiwSl0OG4xl8B+JRfU6R4lTZfd8l4lQDfEl9zqJC/AwTp+M8E6RoXnR4JJriJXxoAjTiQv2gA+gSGX3JAzAZwhIxVEQTUl0KOcgTYhNHhCH9HUPZMJITLuIUEi1opzxMElF8ghJho0wSel0pw+AT3kS+w+4DEjyQE2YDDBKFfSSYshJ2/JHi8D1O/HTDxgO0dYgSdv2kJcQSdvwZYkQS6gUiEn78rqOW/bHD7zhC/RoD/miV4ooTWBJuA5fjWuJeYbjsOuOFRILC3BL2AxqBnBJYPNoSL3ikg2wSFhNkEkoST53SEzYDW+I2A1hCKhJKEpG4ChNh1Lj8deXtgq6EfsN2bZj9vizm4m4SUBOqE8TpWWgUEqj8gsJfdL9NmhPE6T+EVhNeExYSbANZabriroRQEjrjAP2UGY99LhOUGUn8zhI4E2z8XiwGEpr9QbUpopr8YpkBE5T8CEDZfGT9XqIf1BT93GPk/UmiCBNE/cwS8RMREx4SroReLO4ToRLBo14CbeXJGC4TzWNQE6N9rGOLdDl5K+Ox6IgSXhLdMFITs3xzYtN08SR+EzkTCjgxE0gSxhjjfMITl3SKg+ETl3Rq441iaRJhE6HpKC0lEl18pMJNffKDARL5dP4TB31UYrd9QbmG4g7t9MIiA/KCXhJbfAxiG33JGAD8LxipEli1OdR0E6I1NuIuE2LDgaPXrUoTWRNimXRiprWaXAkS/GObdL0SJ60NIHVCMRIONEUTZaLD4zHUHROCEzZ0aaIJ1a0S9+KjE2TNFRMZAw6ir3wIQJ3lARJpAwUTfHWj4g6s2TgXhN2s0xLIMF911GJeE/EDpuJZA+jMKROjE4oSjnW4tBkSkdSpEzUDSIwpEmHNSRMwwl4TwMK5E/3idULdrQ38x1Qf1NsT0xKp1VoTBBJeoDwSqdVIjeMTaxOGEp51ERJedAwdfUPBEg/ZoMKTE/rjR+KedE9jzHTWhewT77RPnXUSrQPzEq501eReEhcSSxPvtAziKRKfI9zDfuNAAf7jMq1dSWpE6DwqNT51yDxZA5AF5cCdE+KcknRiwD90D9lDEld05OiZOJMlcelmdFzYSnUOHEQD8FjNDSNiVUIk3N11U33MoN10TkPWjWZ1NsSHojbFvUSF1BPBvUWtNH05F5lVNA/Y3oKF1b8SG/yd/apDMqKSRf6DiJNrmB8tvgFngmitV3nF/DU0B5yH/arjxfwO4gNc4YI1abt85/11/Z94uJLN/O7R+wIBGSN8LuNNA6G9df3tfaljWiWtmTaDXNFq/ZwjxJOZo4LdL0z8I22DOlEe48GCGuJl/GpNoOM2xWmjwukbglX9wd33o89cW4Ou4tTEIaGUkzMpF5mcIyyTe4Og49uDduM9JReZiTUEkmxp+wOLEyLYcwJfLTJ1XzXlxHc1bkXmYlM1b0Weo/LdNskDo+3VfsFLNAs1qukikxSFVWBn/G4k4pJ1dQN0ZLFYYpfZk6Mz/DLZMuI4eC6CnfwH+PqCE/wy2BiSNsjkRXKS2UUv454YMtgIkzf9nONykk+Y3TWXEhYkqpJG0GqSrtUk5eqTAMRhKJ39hQM6k1qTtHUbmIqTkOUSMGLiMdDfyYaTn5iqkwaTD8KSRbdFcJPlDMDFcpNngq90rOCojNqMnfzdLQ+5CuLIRDaB0JP8JHXVYyAy0LignGMw5NRZCuIOkk79YyE3mF5i8uMukmxjb+NU2VU0FxzaaDk1HpNs6Xy1YyHGhMfV3pOZKT6SACJSacptYyDZRaetDbljDO8tLCXXEGsDxuFBk2MM0K12gxzpyK0ZvJ0sv+3q6d2i9UOmrGsC9o3v4w6NSJMNQz9YgXSZtSisv+y06UX8Q0CUjWI8Xk3vvQL1xeJYcP8sW6ANDHF1ixDVA/M4E3xK/UXFexIJXcGTNQP22Y+ZQXTIfUBjaZL4uJ/jSJzLAwTljIVBdM3EfCkxk/lUhcjFkgLYc+J6/HUQ5ZOZxcgwfyw9DdaiqZJ8KG/iwjVGAFsDjEW1k0F0AJNEtH8sGAPhk5td30iGJXfVFM31ksWl8+JWZOUw5QLYuSy1uxIVDJk1nkmdBSNjDblq0ZjVJXX3fL2SZFnWknC0/ZJPmACD0S3lAYOS0TlcI72SzpLDkxd9RrmkYkaTb3zNdQjYu/x8RK95FXWdBKVtATUI2Rv9nt17w2hibh2zk06kU2I5OQjZe/12g0OTDGM5RRdi0mPGhdsCXMUQIZOTbyQAtGf9GEVk5JhiT5meojeCnpPiky6T7YM/db6Ts5P7fFyB4pM9k/Bi/ZPjk07jJ4Ltg0uTdqUThaRizpJctQ24e5MKY6yC7YOXk/2SF5KJNb6S15JHkypjoomZKXeSg/2gNUF03kMQIao0+iTIcbqiLEKwY8nVDGnGJFnVWOWmomlkVej1Lc+ShmlFAxm9btChdSkFdsLNWB9dnqIfwf8l/5OAnR9iWS2UnEBTwzjoks2i/5ONNMgcw4JZLIKSsLX5VK/QzaMn6AK1jz1j4UM1X9VleQU0wjWoknBTKQTekmE4ApM1NXyTQLV7vTJ1tzw8klEDlJ0prOI1KQVGovTjJWyaNNxF7xMvEl7wwqP7rSvwmdhVE2/MhnEzdCB0UsJLffvYwQITY5HUc3WCNWriWQNTNNt9p+JEKCQ0+/zY4MED6h3w3R01ZEzu+R01eFLIwlc1yc2NNbG1zpI/WWd5PTSZfCM1jFOPNVl9VTXU4nvYzFIM0GKTNgV7krtkhnBZdOxSf+OQdVToizVcUiJ0UzXLGUaiUAWzdYc1RTUAEum1MwILHeziQXlJfNciQXmqneBi2Z0EU5jJwlM5Ylw5+9hbrAc4Qx17ND90Z/Rjoh2QWXVf1F41w6NmWbJSelgzko3iiRCKU1TsZXGnNCj1oxx74po5E6PqnEQC/DknWDDi2sRKUus0wgQk4s80ujji4tKDSrgr/BijegzkYlRw4uOtdZjoiHUodeh0F6KCYr1UbiUmU07DhxnqdBAcJMJcY5F8c9TL+E5pxlNJNIx1lXwqkLR17dRD4lZSPbjX1RID4MXodJMNKrS0dL68Z4MLdWrYEvWzfcs1w3yS9dvVqaJGUzt1Q7TddEc1rhOVOLw1E3UvrGN1HHTdrMdCMuVY+aZ03QIlZLHic9TedSuDTsPhPXx0kw1JEvqESHlrfXhTy9Q3lEKjvDClwGutlTh46DPVMVJrGd90t6AnrJ5S2xhzdIU4y4OvdCoti3RiNXf9E3zHxDWjhRIqLe5TrAMLdM65BiOXdY5UuKLZEsfEibWVON2jZ3Toohd1x01HdNii3lL2YBUCLXTshfhSXB2VFAd0JwxUdR3iZyWLdG4l2VIDdNH40jUcNSdh+FNDosOCA3VlJYt0ICScdT10DFjpE7h4qVLt4lXYY3TiBIIDo3xnTMCicVLbGYKi/uM/YaQQa6zmGIAdQGNlONx4joIdIheS6kI8ccmizrkiQlaCNHSRMUs0Jej/IwmigFzQUgUSoCnpNJEx4nl2wvApCHhJooNTBBLmGfnZnbTmGeJ566zpUm/sqaIOExcDc1PELKVT9dhIeAtTR0QfLURToHhJo/Wj01IpxH8EdoITPGNiodR4XEWjR0RAUoml4ILu1c2jcjU7UzipPpNZYjxwY1IMJZHiAdTtxb1TjET5OXcCJwVIE3cCHSOhSNhSaiF+fSCCzm2OgvDDuxLwKJAiNoInw0dFymxBw9WibYM0NYNTcKNhBFkjILV+wrsjqB3OgnDCoCh0IzipL1KdNPvZ2SLmgoiC65yfUznDQiLRIrsj31PuDGc5gSPrI384gByJtOudE1PkI4B5dsNkQs6DF8MeIu9igvzScbqtUVKghBrlLRSXUj5smY0JY98iFSK3w2UjW4J1A4WIBMM+db5D1sj11Gn9vyCAbS5skw1YJLsjyNM6wndQVizI00dEW62/BWuQhyNXI47CrpAoNVjSg/kJ/PKQPSKcQsM1+Pl7Iz3VTqLMmWo1sEIc6EHYyNPENeAjkHTMFLsj1nTQ0+dSUpAa5NogOFIrLf4jVCxOIw11ZYQeI/bofjVuI+J5dNI4o/nY1zSsaYB5wTSsaLBcCiPUubJhyyIIpfEZLNP52VE1O0OAeZvC+7hnaTUjPnS4MSzSGBlJtKxptAOTIwIDeHRM0jN4HiKmIjTTeFK9PT4iglkrQw10o03rQ+hs4tPU0lFSHVNJAb59kNL21JzTNLUtI/MjnQMzIzLS9SM0tOMjZLTNIzE9+0IU3WMYNiPJTf0jA3QldHojLg2iI+YNrfzKI5xFjNPvBSx5NSOq0mW1wyJYsNMiy3SzY6IjMTwKPTtCvyhc0q1iuNjjI9jT+iOy0/WDXNK42SbSpLVlbeDTQuSaAG8TfFNGRROjwdRVvQfiRCjH45otveOYyQN11sOjA57VaJOkIHKNM6NkTDDdMwPa3MVi/Dme1B8tNeJO2NvjQ+gTA01t/pNe01pS4Wyio1ZTzpJrNWHpPqmBNeNSlbk/UTOjdlJIrEF4+X17NOl9v1PB047T0W0W0hWFltImbeLxWcIA/LJsg8MytVjICbQPwmO11YFzWNa1+g1FtBLjtrTtw8D8JbULWGy0xJig/NOld2LMtQBFj2y/hMSZp7TJ0r+FTbTtwyatp4Q6wzj9p4Udwn60gMJtUlZ4EIjStN3C0rUk7X0SwsmrQ7q1MdKS0q8SVpkR0xVstkjEmUIDn7UF08B16MzurAeph+yzE1B8v4SudYAjK9WfqC3DX7VPObNCkHVF0kB1WWl0oWG1dcIuNIriuVI+ZCiZzdMk7H+ScuM1Y9e1CpkfY5+pn2KedKPcrpK2SJ3SjdLV0q78tkjfYj+0qONy4hXSfcIU004YwnzS08PUNOFfGZd1akQT05w15VDoA2WFlyjTdH+iqBIDdOSFwP1MDLag13WIdciFxRKFrc1TJDi5U/mj8aDeUuSFh7TlUl5NzVL3ISatw3ReTN11ae08UnPSR60LdLPTQgPT08es13XWdBT8u9JAYnN0vqkLtePSVmCj0xFY4yhU04msHmNJsR5SdIKvPVj5qoPctAd1TMxjdSKl3AIndY6Fi4NtUnahHAOXJATMn3RUPcptE30PGRO0ncRImJlSom3gkw8Zom2VOEhVH5MJUnagJDQrUgVQAPQkzZkSy1XUtfUkXqDeU9qwRFMX050CB3UPGQAy9z3wKSfTU+goEGfTfq1A/PI533ybw7D8Z8N43d98Zfj1LJD8DoUx1LignSjzdTnkODmqNQ6TKARQ/AFi3azOmDg5LLTSnDg4sDO2Y+qjaDRIOcQCjLE90r98+wSao2z8Mpi2Sbz9fYQTfIek/dOYMpUZIJLfyBYYCDMu4p8T33z5hMshIDIR0mAy2GwVsIlj9AN+VEZjy0Rx3SFklDJY7THVjmMZuAg1c1UXImQ1dfgEI0QC30n0MiQCFs34ApUZ1LQENEwy93y6otICaOw1oyID+8T3fJ0ovAIUNFzcbDL+zA0SzmNrfF4tGCISAvQyVRKXQ451B3zMMmwDEC3RgSQzXn1j0+7DGs3eY4dC3KEwg9qjKMKOIo+JRkOUM6lj/RmiMmVjVWLBDe6sZfg8bAFT0/hDYxrN42InnVxN7sJIVLjDKYWAOa6tKjI4gzJDB0TTwuoyBzHIgjShmPGqM2BC7SUDbb7sUCOcrUvDaIOxwzxDOjKKMjpDojONLeHTLn0iMgzYGvxvsXqSLPyPkmYytpJgwidJx5Nmk6h9bw16kid9F9id/QeTrhOWkwGT8/yv9dk91jOdBKx1lpOOMwbiFjPiohqT71lmkrECgNl6kwxpECCykx2Dm23A6M6TE9XA6E+YywNyoiTZA/zmhEygyuOhLRuYqpO7fY7s1pJPmDSxJDPGM51T/aWw0eBjXZMWaTGTWEXHQQWTTZIPk1kMF5PTHSwN9ZIcDE2TWOVO4+WSCHzFk+rpNoN07Qkz4XTOufEpQXQpM6HSXkwr9G2SNHUuXUF0GTJ5fWtBWOSoYkNBYcRAU5T8CinpMq3YYZMgtPTMhiVfZDaEqTKX2CEyvZFBEXzZpDMkbQ24a5MMY2YzgsMNuBYza5OIfEygx/22M7JiQrn+M+KS3jJb/B+1G5jyYv4yXjIvNfeShGIZRUBjPzWZKTc0xumdBYCsFFKYRIRjATNiImRYQTIa4711mSg3dHDE2UU9MmeCPTL1MmOSuN29ky6T9+Jr/HXDpGLlM6XTCqHefCYyWS1Y5epSIFN3IM2j6ugw4rPc21BQtFd5eQJwU6XE+TRStYUALFKKeUKDHTV14QutHjP+rBXVpcRzA4I0rpFDNGI0UD2V1ETY/f3+M9EMcwJStJ8iszPRDHc08Pj1APk0XxJmdMXUkFL7MlksH13TUtzj9WQGZTIFEzMkMz58YzJxRS+ju6OVXbtSd8QwaRczZ6II6VejVVUXbFtgeGjek9+jfCNXoqet56OrLT6iFb02gjd89VBo9JMNJWDi9BW8i5P+7UWtLayT0qkFSzx1qdutCGJu0rD8frnmo/+i1WxfAl044vSL00iTZzMSEf8y9yG4oSQzxymlM7FsWaH52ZCt6zUWItvj9uj/LEKT0nlaUxIDikMzAuGl39HcU0dFPTImY3AQqXQR+NM0Vk0qUfMzeFJIQ7RShpl0U58iXFKgowOiMSNL/EdiFdlsUoAdvJMLsTioc+OQs+WjMwNrPfmFPqh2Ill0biVNo7iyYLI7LeHTK5jl0pytPeMu/bo1PeOO/Fy1PeM2xIOV+gNS/Kw1PeIy/aeswWBzfXTEpv1ngxdtNLJ+gjASqqAMsxoTJQMjgnb9TLJjYnFhNsTAonFhpLMaEvL9PFIm/c2YFv1Q/LCwXLMrkrCxRXw/OAUFKhLrfQaMpvxL/VPVNLIdRPoTXRlB3FoTpLNfrMSzRnxjM7lQW4Me4i4dzJON/Y79gKzQomxpdJMQJS9MHJKn/cniNWgGAhWldfxIkscsjiQy/S/iCBXUxByStv0rA/z8VMRCI0qyHJM1faQhnJNcskdsNWg8si2imSLzGBmjvLMPTEIjo5gysiADXeJt/Qaz+SLasn6CtbWE0WuZYzEkMrCJILJwPW9Dp4SHI59COqLykMTDFrKYI63CjyJLQ1BCg2K2BOFc3cL8Qww9LdKvIunSscOX7dHC692CwqjD+gyoQ11jKMJgyVjIjyJR0nayEuPnImDju1JwQt9jDrIfY8nDJOzSbFS5bECvwzvl1rMkMxx90VJvErURy0OyNFStDD3ruO+CMgxVfGGzNsNPgkAtDtMhspdFrq162Nlp4sOfzOoTIbOqGKI96nAySMLCgMLawqLC8hhXgkLiY2K1EAzju1hUrdrjqbIQWMc96bIow0+DcIKHhO+DwuNd0wOpMsMowiLDBkCsdQOoIMO9bHZFBkBitcCyNBjmszn8T2PVuaWyOsNUgsCYapkp/B+1kdMo45tVRqOZ/Ccsv2M10rzi1ENlw7gjgCOFwpuoDWN/YictlbKkgjbE92JeLT/Cyf2AIrMs9bNsQZWzNdPgQuCSEIm1sz3DCOLD02DjUKx9wm9jOdL6bfmTYvgDs1jiYJAlswiYpbK9VEipwDQcdcc0EnQwdBJ0k8nmUxx09S0lOFix39TRpAiD1HXaNN0DyQPgeAx1utPUdQTT5lN+dZttEcO2nJp1KtKqdNS1THSntUx1Z7QzE/Yt6HSjsxz0w7OqxCOzTsOctd/UZiy8dHZSE7S7sny1WHSlIwFjqRlTtW/UIVOpAl4g+DROUksjC3WmdLwDTiOLtWeySbUTdaZ0aK2pGAq15lJWdH8zqRmitVh0iNM5Y07CRdVv1OY0Ba1VIv9TTsN9tMR14yJdE3tCJ9UjMyTF27NvspzQu7J6WTc1TsN5jN+y20LhwK91D7InuGFSsKALEyEjcsPOUlRxigPXsie4Y3X22BJgl7NmWNd19KOCwnYYvKKMdZB0qsK9Vf3FH5JlJSbY97Kwoe/SZtMdYnZT6ZFgNVmMODQvsybYr7OsnCain7ILuKKzktONmClAMVJp1K3J0nSwoRO0MblLydJ0xJzydErYMxOsnDWjc7NBJFvVeY0cAhYjymPUdLo4vAPzSTbZ39R0NIskxHK6eIx1TrTS4tk5eYylU7MTBZD9tSYj1HN8dTQ0R8LcddRy19R1jU+zYZPA4ix1Z1m1LdETZ1hE0Vuzz2Hbsvp0IznDff/F/blns6Y8+Kyl5UGZi3TFvBrCdhnyA/10+kMhmOBy4CUgcuAkV7LgJBxy4CSIdZD55AJxw0wcr7JDOMq0llIhsK+zpjx3g3+yIbBkdT51Zr3BU/IDFlItI7mYZ9S+vHX4TlPSYD4C7HNoIY6torMQ+WxyMzMXhY91l7y/dZgCF3Xq6Bw1u5mbdbpFWiXuUlXoZFLhogdc13W3xOkEmVN8aRgDQ1L4uRN1sXAikgZzJOgX0vpyE326c6rpvlMBreCSm72P0yTpw3z3JP8SJ3WM3W91pcQvdD0M37P7UnUQBUGsc21QGHJO1Qwim7PyAvhzTnJ7snPVQiL0IrR1bnKD0iw4oFnGdZD4MRNAA2+539TTvGNj0RKPSLlT0APDiWMSDb3Ps30yaGKkU35zmFLhpItEHxKPTDETUiIA2B8TXnKdEmMg7nKZOEG9rnNdSNFyNaKcwDQixHQaNM5zW7KGfCYzBA3bkkL854GOM0lzv30w7LdpZPypcoZhXN0OkiwSboKoEuly2UUfYulzLoKsdIZhupLUEiWACmiR/XjlTdAsEmYlC7AlfXly8xh3grlzkJP5c00CNpIcEg4SYMVR/WR0YMQx/M+CdVAS/Yv8of2x/SlzeHS3aOb9UDQsEi4d9XLlcw1yqOVbs+hybxLBYBUzMnUtcy6TKaxtc+CkIvxnkiJTLXIWM6aiXXIy2ZoDVTKi/PMzCpIi/bYzIbRh/caF3PRh/YMyEv0YkkREw3IeZMMz9hMrkoUcShJaQ/KSL3k1fFqSbgP1AnqTU3Pjkt1zuzI7mIKzs3Ik2VYDPCUbmCH83EPY/R1zbXLh02hz2ZnBspHSrPgzohd0pqP4U2OjWnJXdFOxb3QYGMcsH9O8WYlS9mBBUvtsZRLac/ttWPlzo/ejE3x46PZyH7RbYQvSJw1PdAN0x8VPNAN0eOihE5vTgQIDdQdsc3UDdMdto31evKt1Xr0bdVOiNVJnTBhTa3LgUUSzK3NWKCSyV606ebCRzHOHQrQYxHQBNOsy0HIRDQ5T/yQVAin90Q18dA/0q/h2Uopku7JrjeZSF6MJGHPVwdTnjLR0QPMgw07D44wA8yfolLISc2xEr7IfXCez7dQCk6kZ443/sz9o97NvRVhyVmX1KIpzP2nf1F+lxbIlMgLoL3IurY8lsq2xffbZf80o8gO4U2PfJcsYiIPfJUPoaK3fJfvZRdXfJX9cEv11wX9dKgIJXWyM8hJmuRI0BPJEKZwTM0Rlccb8e71mWCTzEkQGw/tZGb0cEvITLCQU83QT/7hn7bF9/ugyUlTzQiNyUrTzOpy48vpSETko8kMcKXI8UsiprHOrcxVsMhNvRVo0MhJXJKpsMhIbM+ITZqU5xVITZt2wg7ISFwR6jKITeFLd/bzz/yTGrWjpe7wz1WjpKQWC86GkfDPHWNHEx+ki86Sd7SwyE3u8xy3i8n8hbdQyEtTpom1S85LyQhPreRciLWksJTBCohO/7XiyC3kaWAhCCvPoUzl9ESGs8uMsKnNsJCOz0Aj3JMMxOX11uY5wmvOMRRry8hK7M9W10Al7MrW1uvNvRZc1uvIfXRq1uvN7vYoD92n/JRF9B/xA5IKzLTMtHVrziHXy8lTzA3XIHJbz/yVGokbzkvNa82RM0YFVfbhiYp3083sziXw5o5LzePM43FLzmvJinUV8B4WS8q7yinna8yQygWDq8g/Z2rEl4iaM0swLc/gssj32E/iY2AO+84yCShI93PQ9vvN8vTl8+STSzQYT09wkgqYSXvIh8mZcXPReYTvkxoRKExHy1CIR8lSCIfPd7ZWSL3lwgvWT9hJx8w2SL3koLfpz9hLc+flBtgKaEy2SSfPYzFLyG5wEBZHyXvPtUmXTsmlI836sqHOWkl+yWvPWUznyCHOOcQezAOROUyfpAHIfcrxz3ICG8+9zRvMgcibyF9Mg1LK4YHMi2Fey1vOQc8hTN7IfXDBzISJ28gXzkvM/ctLzj7OUnIhyJ1318liENyRWUhszKHNnxe7ziPOyaSbAAeIPDWNSohPWdaWF7fLmg7tSLWgd8q6TXfP26Nlyv7PWMVV933IayLLzb2AX6KITPnWzaDzzYVOh0i1orNJ/MrJFgHilUi1pzaM5Y+Pz4njKAnR4SHiFffuDABiy89BdXdPj8s6DUhIbU5l9HnDDUjzy4Hkd8kvzgHnKbV3y5oIabS3ziCRZ8mQyFDRQsvd8cLMstFd92ugSAzioebQ6AypRDXx4sjICQQWZwg7sHNL1fTYjcgOaqEiz/DXVZMfzMfiWwpwDKrH8M4QCF32EAmmscz3EAvXZIeKUMozSeAMg1ARslDIRfeQy5oP9dMq9zRhsMxCzqvLPc5p927I/Mk/FB3z2YSu1r/KyLQd9DVK7fQ1SDRNXbD5Thv0IGQd8Eum7Ug7s7Zy7fFVSPDNko1vy2HWAApUSOBgNEvD5U8WtfWSj3X33eSwDoh3HoEALxZISpO18oBlrfHAdSVPfaLFS0gJcHCesH/JvxKczNFAjsgc58VJik9wc4uPTotsZE6KjnKptnBgYGG+jQAs8Uxo9cVJjotH57/yRmS6jhzQYGd4zqXQcWGKTMAtZEvw5nTzyUydhWlKgCiST/OTACkF4UrQYQmQLxKJZdKOcTjKoC3gRABJ/8wATPaJzosgL77KQaDRpgYHbsm9UzVimtd5chxIF08NYsdJIVFR1dKAEaNq0AjzttcFd8dIEaeW1CEzSNEjdMWkDtTFojjSKg19IETS4g0nT6cP0Q3wLeGUjrVkwSFXMc8v0BGhatcFddLT3PKwKWM0UdJJtTAviC4wLeGWbQSQzfHwmM2O0ijzMtSiCuLWQMw/D+wTQI3i0kbhqg+S06oNhNWbtgJFUtSUofrSnPWNtxjSd5RMyxLWqpTMzmgpGM4S0+YQ90xMRPmNetaxIuLVm7bIyygpT+fO06kgJtc2FP5LMtXX5wgp6pCYK9rVoWH61V8MFwVuzw9Efs6sT1nOTEl7yk7NCvAxz/vOcdF7z0nRB8kkCwsxn1Qkl7SzZOFQ8U7O+LOnUm7PR8puySFWntb/8XqF8dFqDaqDuCjyhcXJUgox1PIOkNLPEoDl8ddg4UpKmdUK9WHUREpep0gtIaI9B27LDEv5VLLUk8tLNmFM17GUSmbMAk11JSfMDM11J8fPc9Xql1IJ/EhliJIN6pdjM9SzIwQ4KWQNzw8l1cdxPVFEDCE3p0kndkqBRAhJsMTTJCxgCqbxf0n8T2DMp8vI079IxNFASgfMNVHyCK3KZ8uvzVgtztPj8jgohqfx046j+A1SgMGnIddESZQrCdGyYU2PREnWoDHOVXRR1/nNFrWx1HlQSdSQ417Ov1RyNi9XHPIx1WEUdqKp0ZQvkdRUK19U/ZYiNanWGsVh0gNQKCi+0G7GNClm8xHT9RUULUnTnonQLSQH8fTIKlPlvjH8TKOULtIpjb42H1ILjQwvqNVQFK7WeTGLdDVUb00etGbwU+FEC4GNjEpstGtJnrSBit63lULlTIy3AaZMLcIRRAnhof5IimQilh6yOKBMK8GI908MKjilKNJ01k9LaNZcpYxLMJOgD/QvHrc/zBQqLGa3ybxMuEwhMvAKbM2w5vPz19JfSbhNMY4cKroX+JLEzbPyIEj3sqDTxC/ZjxwtMzFD8UfI1okWwBMwf1VcL1Dy/fTHyZFI3Cl/TsPxR8hhS/i3f0rcLUu2EM6cKEHLZNF6glwtAMgnU91j/0r98TArBAj/jcfKoNQw8zz0kMkJ9MgrnfTFRogNS7aIDqQuiAiTMV/O/08wD7gvMA08Lz3wAM7fyEmyUNAEKzZJ4NQhMZFLKvUmxLLWQioaieDXqbeQz2rEcAyQT99JUA5DV5wvsAgTND3wEzdd8QoNX0xwlfezIirfMxwu/CgVQFtIv8s9gLPP7rY096wsuEosLbwpvGE79xwtUBD3SeTWDeKcLU9PXC9fUVwVnC0Cz9wtAs6gydDTzCqcLVVS5U3cL69K3ClBilwsb0ziLt8STCqcLEGOEi60LYOPHCnBitwqjC7D8Xxgg8/sLP42oMvldC7VYiifTa/Lr2Jpwr/NgQ2ky930QY/wz9IoSA0Qjh9SIivvTz30b01CLb+PJkyCLb4wP82+MV/Ovo8wDr6O38+658IoZXKD81eK2odQzZb2pYqwDlyl8iyDU9UPPfSQ4PdJkEz8YPDJsmOgCzzM/GaICMosKigMLvQsCQfQKJjJBw63C+cItwyCi80JAoz3DzEOWsrCiMqJgIyX9a6R0IunSWSNMY46zroNZwjZsXJO2MUTCUdNHwyDjoNIOEqu0QKIS4kjDlrI+sggVigz+wlHT4CNXw/pTp8NRhFki59zSbe7ja6QYijsLPkG8fCOzKopOo9fCbOPXw6DC8Wzmi8zjjyhpokaK5+IEwiYTdq0Q44YTporOiwCizop0I6DCknWPKaDCoCK4LD4RRMM2oxfD/iXYYrsiQ0OAM48plBjktWAiBaKhwoG5IYris3miSMKps/QzDor34gULQ5irhA6LxcOmeQXD3ljuiw6jDILgpJgTJopOojqKSYpAot6KAW2qGRkj8d1DQgFs5xMBinzi7oqyYpmK1qMaizhjAKOqGLzibuL34rfCLGJ89RCi0Vjg0s9z3YVcfCqKKZwdwQ9soWKWw/Vjbhk1bFqiqIIeVZjxrW0QLKI8s+klKU5iFJhfbewzgDgLLbWKal17YywTkFINimjtH2KnAhX48LgSMuWKvW2Vi3X5XYKfo+JBvGzG3OJlvG20MpCCCNgKM2ZjS8PVYvmFQIJsitux5jAOi/Zyv4RtYmqLs2LqigZDiqI508pCZbLUIzt8M0Ojis3To4s6i6OK+opFY9XDWqJi7FHTRkPTi02L8RlYyEFiQESukuOLc1mxYmOKPrNrdQtY1yzn0laL3WI3LJ5i1oqZY7VjMjKZwudS/YpcfevzCm0QCtnkzGzspfxUDkMMPRB0DYo93ONk8LhRQ46024Oc+HuKuCzZIg2K22Jqc4ti5UIOwqL106V1izVpo7INiiGiZNLwuKjit4oTnHNj5WIa3P/UDkO3E8eLVzNHhX5s8/2c+LZCPRN3IuiEQDC7Y+jNOxgOQobi56VBsl+EpbIvrUVDC8KPC3ISYYM75QoDIYJ15SO0yG1A6AGCqUOUbC+tNuPYoyJFzjjtQy8Kg/L/ipEYNSwvrc3lkEsokdFlqhMRuONig0PDBWBLsGwpuBBLR9BimVFEiEsQgpYjsDPyVAGCNGWAExG4kRiRQ9BK6ErgSsfCy/L/rL+LSooQQfaLIjO9pTwYfSJU+OHCqyKaEjGiEwgdQmpzhEo5Wf01hEsT4iKt9bm3CaRLysXTpCEiURPaI/W5F4rMw5tiLkK5I6FU3SJU+OVDjMJ0S9sTeSNkwlrSYOUg80EiuuM60lT4gsMc0zrsdUP1g5sjnPjUSueKPUjNcjuK6Wx44gri+OJLQ4OyW4u8S/2y92Jg47xCQwy/hQji9fWnhL9igMJdsvxUtwjC47ViaOO6isJCbB0imVxtEkpf4mJL9bP8SsSZdbJDw3cigkvUUzn8YOI1s+xKGpmVspnCFbMusspL+OMXIhUM2dLRi0bZU4VcS/0sYEuLpMTiMqMjY+9YOsNCbS8LFcxKgtazWuPvWSTtFCOvWCjiektZw3asTKDEmY7D2P2Y4vKDdrMmSjdDyNzygim4FkpKgtuE5ko0ZNjieDIMolZLTWNzbAC0oYTE45KjiWzChGWidj0OStpLjkuk4ppLMpnbCsyEGkvKgt9JaEPlkzdCz2Oqov9SqvnmC/xKHks5bIJK2NP8Sz55uCLqozKj6/h3nQjjTGO7MtJK/KU5/MFKt9OBSrTlOOOhS+2zZGQCkqr4d9wBSu7MAUpWY3xKtORCSpUYx9QVDHfdCOIYI9FzqkuTwmaz3HwOi8fi4mV2S66FSjPDg6A9qUsoPamzfTTqSNTiaDJ5faxZrEj9g2P5vgGygqWLKMKFQo+JOWwFSz6Frq2FS4A5qUupZUoLrFloOMTiWoIaMnY9ERPlS8OClRiog5lLZYpDgxqDsoNSM8iDKUsOWSdjhgtbsp1TMqzFgm9828P1fGHEPMJxg7XCQrgzVDzCs/31gqCAb3wkS4WD43yfrfXCv4Orwpnjrm2OnUd96Eu2kiMCOYIDSyiRLJMgJYGC+wIBg3wU4nmwbAf4zeIFg338djWOnPsDyEv1Mlrg5YNNSmhzdoomfO5LOxzZg+cijQJIo0IdJQK4swtLrwOY00sC2D31A6d1eyOZgqTSFsSDLYRDW3wgIuj8vOK7vJ/ReNPg/N8CBx0Y/PisBxyP/M7DjLmrAunDjEPtLOhCDEKWsuMZDEIBswlE80tzS9hK7+mzSt1tR312rY1plsUwg04dkGMDbE2D54q1EQRD4Ip3SiP8YCP0YurRT4LeHMJZ6bI9AzGyPXxm/OrDff0MgxpEsPxUrGQMH0rvg7t9n0vngyzE0kKz/aZtN5OoRfCDZ5lDSzJCF/0pMZYLmItlrB6zHgNLNZBCLYKKkmYlr0uU2PYdbUt6kuFCGQI/7J1KYMtdS/YzTQJ3OZTZ6EIdAznFfUtYkiP8AIIcQgz8xpMeA/YzJQJWvZTZbySjS3qSK4O9/d7NmMRS4phCPCI/7PkDIMsWdS98M0or4LWwgmz/fWgDRUtkWPb88oI/fMHT71jeg7KCtv2Bw0+SRf2ygu7dS42JPfiSxOPaA5nDvOK0RFVi4sVGQOdjXQILLT2DHgMEylpDLeJKg55kIYOMy2eCtsJVBd49Fks2xeFtcEoEykTKDLNGMxiKYOHNcuF8J1hF/CrzMrNApDzyO0vFbC1p731iPXLyPQIS/PMTbMXT8ogDg3NCy+P9ivK/g0V9U7LTcYLyKKVOAmbz84IDkjbzqESCs/1tI3yy84o0H4I88kay3BJQA/v8CvPF/TLKhMtTSo5zs0ooEveCIf2f0rjLsBIXmRsMSBO2Qi1LmspUy4bzw3TQ/WrL9TLgyzWIh33vdUOIiMolfFfF4NiFfScC3wMpiSlFmeIoEzhCgrMc5Jd8JX26RWzFneMe/SKJsBMCFRDKbvlk/N9LNYhDS5fZrHK7CpHT36PqygIDX0oDkg7tpEINEmN8R3PH8nhD23wj/fetJDRp0CQ1pyTTfbUS3kKpUoCyvCUNfD8kewIsNJcCE30y9S98VRPkyuzpwAseA7UTI0rhAya9L31rfV8CPCKeyjzLB323g7jKZ/FAy4msAFP/fFD8WkTMsm4SO325/PHLKJIoM2wNTMqoNEHc6hKuhCj94nJcFYHKmv2KMMLK6ctzg6gyIAK0y5gysALPC01KlwveA4nKRJKfMm4TDJL9tUyKrMts/dSTwPzVMrHKv3xxyksRlguiYZ1SnnJ1mDDjv/zQ/DU0MdXg2TRigMuArFdLgiWtNX94l3xVygEdkUUIApkCsfKWNIuC1XU9OZnihnA9A0uSsMrJk2byFcuTkugUqMpdMvsDrTRDk2NLvZL7Ar/8X1j2PORjxf1LNeXL6sqICgOLYrKAOFhKNWgwSz2dgOLFeE4yIcMMEhKyY8uUkoASWTMei//oLuMMPEhLLfygSyLi1uKJtNDiQDAck9Fk++Jg0w+yQiO3Ca6jOrIm45wiHhMHMuL9njmry9eFAaJKAJBKLuLjBR3ypzMdIA6L2JDBuMTiIaP5ildiomKYRfGLlMrleVuCcUOn4nTj8WWxikqDmd34QhfjLlJKgtz4OuLtg31DhOOsgu5Ydjys7dMKWWjlQ+BDyfkagHdT1YMWE3TLhBLSMvVYyDHSwqn90+K/Y9g5umD3YlhU6HTPY9JjtlJ2PGfkYbRcSkgL9P2GEm2SUCz3Nc/ivUOtM8/Lp+JotY/jUOLcwwWLBTT7ysmSusQ04nMzlRKX4+Ar4XQfyk3Kqhk3E2isOVjzy8lkL8sFklASOmBv45aiJMPxoK6ib+L2ohOTUZIgKpArIRKcyzNL1AmzSoZxfUO8ktYRWYvMY6DDk6PJszOEx/1949EKynCa4iuSIMKWk5o13llLk77jklLH3eoZS5O+EwcyTTNH4vJj5OOIAi7zv8pn/ANDuCoKYhuEx/wmEtgqO0QyYyV0gYozi+gq1qNqSt3g6CpvYHzjwaKyY8mjP4Xz3XcDAmMZdazSTqJDU5VChrXFoucSoaP4KucD7qKywuYY2hho9QcTaJJdgRPjklJGytFY4vV/yoizvHHsKrD1udzdNKNMG4Xmo+ritqKzQv6LrCtMKudKEETuS2ssN8PBrDIqSdLtQl2A32IPQw5L2KLdPCiYD0KpYnzSb0PWSuTDayy4M40jKeMlJWNDoWQbw4tCpdOeIiWijKz1IBLiliK4UwGyV0JTQ3Zso0JGSMVCb0KnPMlyV0O/w7MiKis509dDMipYQMlLPHy4SxWD2+2/iuoN2iuFghLjPUr9w0ozxJA5YjYqM+3KKteFL8OwbKFdDPJ9S/kkBYJoLBvD/UpLi/BKRkmUo4NKfrLDS3BFlirV5S2yYYNtYg2jjp1RhHBLz2PcA8SRFdIBgu2zqvJl7KVBrxImbS9MDFgrYrJ5yrGCg1QNIMMbgr/y7Wx46O2Kg6NZE1SxSwx3wlTiM00vbWui8bN+0hCoYSrtxGRCoSoD+cXM0ngCw+Eq3HmtbN3y8Uqiku9hgoPD8sDTMSrxnMKCANMPbN3zlOOxGDkZgOwZI9OCScWA7SPVNWzk0x6smSqqNMKCIyOcbIUqPG0AvNR1UWzSeSZTL01TdfkrNPXNzYE14cNpKgpixSqNSTUqBgSTg/k4JSu4HFViNtLSMqErLtNJK0BznG3CnbtDYW15jVxtaSryS4IskwxWnSKCy9jHYrCgEKLxK8Tham2lKw05ZSpUcRkrhFmV6JUqZWxXbSkFdq0Ys8DoxOP8k1qy7YP/JJziwSMXwGZKvqUEy+Kdpmyn+YMqSoKwUhrCh8uOcHTilXVEMxWREgNjwYOytKNHkznEVHE2gvjDS8iqk5tgBHJ64lhzqyodzek1Jx0U0QP90lJ2M+XAhHI4y/lVr2OU2IckqBJa5GK5MaNZbHaClPPRcukqrchJo2dkwkvGg+mQhlJtBYv8Z1N4cz1SGzKBkxpD7LiOg2dk6CJ+1RzzYaJO1UryVoJ884Aza3lOEJqSVyRz4jsr5cSKk2szV9M5xMBSspKrMpPijxILqLKTczLBy6Tl6ukLrYrtqujZo3hTcoJWgho088JWgsGS3yvHK58rxoN7vePifVM2yQdTWAOIA8VxJOlzU9k5eQru1b6NmaIOg/Ch/yo9DHT0caI3vNGisKsHUrkNsKu3Ag5yCKofkrpjP2Q5CpVtJ+khi6wZMvNQ7SfoNIOIOPo4n2368lVivxOJba7B+vMtbSkFW4J0EY5wYoJTKp9slt2tbeKdmsP85QMrS23pkf0q1p0Fs/zl6cAEqv0rvGxStV4qfCyEcmuCV3VrK/LFbq1HkrSrMyVQ7B3MlKqwoGir7tVQc/LEeliZ/TirJtiUq7SrsEMsqnfoRKp2rbirhY1FbUmNgoInBB4RS21AckSqEelQ7WV82KpEKQBD/OSKY1DsAqqfbAHSHKr+0pVt+9lNiuyrZ3nUqj90Vdx8LcnMn23LGaCjaKoGBJ9tQ+mMqhKqqktiq6HY2KvsNNirgTS84viqEdnfbORSBKrl1JSqUTTYq1m1JKuWUpVsf9RVYmI1oAOOQ5j4YoMsdS9skVKjywdlTgW9bLKLtdVXi9S4XWkNYiMiD4vw0u9i6Iu11KeKh7MFshHFz+gHY1DSw4KXfRfUtkK2LeFsqyzRPWeLhAMWq8Qs2sIUZHFwOm1M9DNMD4pJUwPi3ssXaI6qmAp5Y2PE7IV2q5iiD4v3eQDTt0zEy5S8Z2lXi9glXqqZjHIgD4tqRcYiDkNvYf6rjYrdoqeKPNOGrS98JHkWq9S5O0oGq/zZDWOYo5yCJHk1bTQ04atRbZlTwapUCqwlUOygGWqr/AJ8LcIDCWxQCjOLwSocWG5LQSszrea52rEfQmEiPGBJImMgo5nkI1VVqYrL+dWCyNI4WZrChNBXoodKWbyvww+iafyS4wa4/ENOtX2S6EL6vYctmyroaK/C5kyQ7Ylk5S22bEULoypaDIF5c2zngDhY8CNrKJU8/ML/9DSCyXM1q0LJhapHS6nTJau2bEa5Dau72ABSTavSYHWraPQfwNZtmi1tq7Zsy3Qdqog9RtOdqwcsxartqzbshNLEKuhpzCNJI6NyApmyIkdLuPL1qrURZtwSIu+DAJkTcrURZDWUcFStKbRTc8FAGjXTcpOqsqjibQQruGAWw85E90rDE5Ij6bKQjCrDX9W1MurC+r3hwisTzrniwzIE1TMfSjhZv4JJvaaE74OJLSGL7ctX4x9KjbGRihRSBwM3S5oi2IL8ikO9samTqiJSKwlpvPTY0INrqv9LILVBMzJC+ashiha9wyzaMg2rZ6sMrPJCwSOrqzJD3QqK8jHlmiMwgo1d4cKkdcMsd6vbqw+rLDh3qyCNfm2zpSw5z6uDvLHzqBTjqT6K2fNnkzJD7dUFcuozGA1gguGlLKxe3aDs2jIKctIykjPKvcpDbkW6qQBqaVmfU2SDiVhFY2rZHShDY7JzMjIec6Zs8N3Q+KuKnTTHNQoyPgkgazO9sEPDYxZEBkP+6AnK3RkCOciDRoOJpUZCq51zYshqRWOQBYnEnmJ46G5jDWUCsJFilfUtUmIVx6EYaqAY04rtnAuKAl0yM3ojwarsKjNNS4vtoguKj7PKQpV1H8q1mI5TpOL9fC1sDkIfNQxCgtHUjRarQvWJqqD1FFLWq4RSrqqanUMtbssUUptiJlNX0tD9ntSzLM+KrFINio0r3mINnU2KJ6LKcRaqOcS0UsLKWAiuquUraUtsxHjzj4t/XWxr1XzMaj+yp4pQ3QyCV6W/sptiuY2HLaxrlkr1PIqctkI5xfsxj4snWbBCZp39EY+KujiZ/S+L3Jz0a9yiPqs6UoJrJ1jww+JqdKtCasJD8munrBxqfSr1PRSr3GuRCA+KUNzmqhTdszHKay0dKmspBZrCAmtl8sxqhvK7YjnET7WPi5SdW4Osaqg8zGtG8yJrRvKCatTpFCJSavrZFqsA82OKCAq88jeLHPIvivJlzoNMea9yGUqJkoVKHmVDpRfLLVwzkyD4vTm3Knkd1oP2au7UL/28uUs82UVbo+arYtlE9at9Y5MzA5NyA5PiGK0yz5MihUOSnmp/Am5qb5LOap5qA1x5XcnU7S3MciKSrNlp1a0sBIvvtAX8SZOaouh9T9KhUC+SpxPvvXfTNkX3WP+0633bLW50zQ0Ltb4BDh0rtDFqoUngdZDlr5IHqHN8NIpPEy1d9dKm4xpkP7UbfYIiGqNJkx7K8JIk3I3SKR3TY8sE6Hw7cjHDAH3vtCd9ZDiQdNwMGFJekqr4jjUrku+SlbUtXChTrApS+I41KUQvELi0G/TdY4u9Q1wla31cCbQB/HCYqrTcDQ0tipIbjDF5o0h5tRaQ7VwJtDt8CzjEtN5DnMl8Cuh8kxNCYTXwYQNhxbVtXROorAm04aQJkmo1XdmYU0IinoPqNJfZLAJyYty42QoC2XfS/ooK2N8S0pIWdA2S83SdBWkMKjS1k9ELPxKArWELMax5tObCXYwqNdONpP2gDB50KjUyBXDznxJXJP1rw4xgwzWj5cTDC0108JPTaxzzC2t7M6MKi2t0i+w9OcVjazMrQgOrar7NnxP882sLOvM4/Y7zsJGxU0WzIthbahLyfxLO8wtr3Kp5fcCTAdjX1OxqhxO+o2ZZWHSEI7pLgPI/HXx1MgXwcvh0KHN0dFRxGANX1GWNcXPEckEKujiMc2DdZQrnq86Ji7IbM/11wDQ5BHPUTR0/s4CdRrWYdWl5uHVN8ldrUB0idULzN2ow8puy1Ol3an9kTgsBrI9qVnPodCcyvmy9VIQjfvNnahpydlJV6Ye1b3LHC/Iy3LnDfCe9T9ME3atcpnNhxAlTjwX2JY91WuH10zNpFmlHderom9N/E9MK99KOJWd1kOtHdEjqf3Ww6vt1FmkNfSm0kfICArkN7/IRk4ezaBmgk/w1XRgtrVjrixDzdYQYVUQNEwIVtMMdfFlrIct9XK7KsKzIin7cVWtOytwNl3xXk/jqCDQvfWTrZAOE6jV8pOpprPFrWrJHQX1caazm/Vpj2AMOHe/SRdgVDGwCXyR06gg02vxM68tFb5ObdYRct0VUNEVEL6kU6j0z0zNqxAOqVzW9M1CzLoOiKxySOf1c9H6DkwIYauuCnPWjg+ajZPwseDBj6gJ8K8cDRPVffFODztUw5diSeHhAgnaCL/14k80ZkYJForP9+wNmckUDxoL1gtmiAcvbAl/tTgN3KkDZSVOV9feSdcpgBUty8AKmMiJScMV9XZeS5oRboWhiGZOcbdgVSyCnijtcZEPYEzbZV4pLKyGLiite2EyCylJown1jncS+Y0pEXWOltIpqoKscUqpCQGRdYkYNHq1erAYFkGqBtDZsv7KSKzJDnGvvqsT1Hqwvqy0ZMIPYNSjCcoTKcWCCJFLeS9zLA+kwg9k5xlkDbbZk8Ur//egrA2wZdD7Dq8wM0PozzzWuEn1t3us3Svgc10oDuPDDoaTcU4rCAepXgiZ0DGqDcUjgK2Mh63RqksK/KPFLnDmRUl2qqNLEI4GsWi0dqoe1OW2VwgrS34Prs7ZtfgxuwtVNUeqXw9HqXas8deHDN8Jx6l2rINVRQvKRhqtjijYTJdivw2Ui8UuXjKHqr8Mkax8jWyWlOZI9A+hVqhijEqt4PG253mN1qvnr8ev72HdSzAtnefnq8PRF69N1BevZQYXr/8IVfVEqZXxFfbZtakVGwmJsQxz9qgE0Tks+vbSqzsISYYWMsercRO1jBy2VuS7Db2AXK5HrtKsl6yzhzJw16+mR0sLV6u7IrerU6dNiAb36803rhfKN6zzgrSpHLPXzlervE+tjjeo7a3XqsPJ96rDzPape6U3qQ+pd6lhTD8JHLD0NPep9qv8rByyArOPq6nKd6ti53esWaCPquoij6rqIY+td2LPq7Nxz60XEreutay7C7Opp/IIMJN1IPaJC1ENx6iTd+er46gDq7hzcDGRCG6gb67Zt9QOb66nqIJPnIhr8TWrpwu0sZELZagfrQhyb6/mrLQ34Q57yJN2II7Tr5+sq+KfrO51JkntLnEJd8GRCaNO36xfDx+s5w2vqe0tfklhxj+rn6nfrdv1H66fCu+s5wyUC1+qA03vquyMw5BKF0SMOHAzSReJf6rkij+oESmfqJSPlk5n8BEt14aYiFKXC5JsiWnLQSxJKCiidQmEy3LiHw45VuZM0S4Ud7MN14KPUEwl14AG1vaUz6sxKl9nf6+wdxnK5I6UQqipsS9EMSSOvKtltvaWj67AbP2mgG+wdi2oIGhszUBuIGy7yzEpGamgbjlT6a3kjvepYGyVtkBusnYAbCanA4zAbkQjYGu3q4SPsHG3qqKOsnRgaQBvN6oQad+hEGie44BsN6tgadetBIha1+BoWtCAaRZy0G2XqSSN0G0Eix2vxFZRCRPPxIiXrINPLGWaKBeqLivsTDFMlwlgJAKLMG2HD7Bv0Ipl8jCKV698iTBro0uU5eyIsG+cjweveYooSynDYPIQNYlNWs57TiCIc9LnrSvQrYihCVCVussSkd1NiGpileNJaq/ZiwCI6mIGym9UyGpnYscOadTxS6EIrtFIaK7SWsiu02D1+Decjfg3Jw8e0gbKntFIap7TKGqe0KhrqdJgiMHVusr204mynSk8EmCM91VxtOhpnixhCehtQQ3fVd4oKGtXIKhv91X6zmSI2stOzGcOG03jTjyPnIjsiBINPIy8i4VzjUlIagB3ow4FFlINHI58it8KRIsJCfXN1or8iI1JIwqfzLBv5VAJCQYrtxMCijENdU0fDIF05wqDT3mNpIm/st8OmddAiCVzQ0z9SJhsVw8c0SMObs+HD8Sip6qki8eq5IiFSbcO+uW+0xBqvtGgb3lL1wm8tUUO9pdPVHEor1MAaTLQhFYRLo7XRGnI10RqCtMAbHHQkoy1DqYgESnciMRR4jIO0BErHIkitjYKDtMAaaesxImCYUTWJgoAMzPRhgyd0WiL02d1IWRoMJVFx2RupfZNK6N2tSujcAYKC5GsseUz4HZNKmLQmKyhtgetYSgzQ1YLBIuUbc0xAZJhLqpwzI7+sA7g8o1A0NBGtSuG1IRtjgxRSliJnNUnZjRpV6wbSE5GcailDLRrfNO1C+AtnNRKsqNLQS8fiN9UdG/vUZUIcUpXtsGznsvUb4eqYS3u1XUO/rce0TcJEtdT1c0wVIxUb8jS5KmGDfiNBggCZOKg0QpQFCEvpg5Py7RqKeAgdSnmCND9TSnmoHZ0aCCWTGkmDq/KDQ2+jfVPjwh8jgGyYqu9oU8I2g4saV+nwY98Ze1MVG2Mb3cKuKhXZPUvnJS4rATxqtXNNtAIBgwCY5GxW3N2jviv22LijLOxVUwvCHFKCAyzsfALNG0sMBCJAw/2dg8N4ayzC4LNhOGMaZ0xa04VKW2BDGregzNMokSC030rBg3isI0oNYZ4reK2eKregOrRAmS8bk0qJqq8aYJkXc28aEunvG6lZvFlvGudzk0otUixKdcMXG0fRYSutG4gcAizMSxIsISJ0NU2DOBrfGsxKx8UtglT5oJrAGylTiOLQGgxZjEpbcr5s0BoS6XTDOuznDckjg5wigyFcDWDUSpV0ewOUQicNLMIdsiLpTBreYJ4ax8U964X9lj0piq54WSIMInSrxNwgsEjCbiWkIG2COJuz/YcREb2aw1ib9MngIxhkhNN4oVq99CL/9UJtgRvPM9EiowpJI0fSISIP9SdVQSJuJJSav+uvon/rKVzAGyjVrUKHPVqj0JqlqMQaP3QPjKijz43JItssVLW9pHFNHEspXUCblV3l1b2kGfjAGkZc4xuf4koA/QLX3TO88CIqkxcZDrKPTJn8F+sXGXmrpjxiGgglqNhYQvC0akNCHMYiX8tWs3cadrN3GqWrnxpuw8Clhyz/oRdzkpvSmig8kpooPOdzkpunc5XrKbWBAvqRLxr9qjQCzarKm9Wrgl0qmva9SDzZU/Iapeu4rT68DFjUrH2qfaOR6hLpam11wQ1SKsMKmq790piko1bDhiLvY9treBCPg+hrAWMOwmsYFsNhK49ttsMgmxuqt6GEghNqDSRhswhrBpvAvYHCSwtJypOqj0gDfMOqDFmkw6E138UfgxabLsJxKntKPOiayvZs8+gSPKud94LFclaaXapStSKbxyyuefnq9yUMufHqkh0uwoQNRjy/wzybT3MzS4F9MgubylEtBZOTytBS0RMzy21cJuLvLImjB/BrAjlYymNbAvcTz+PJGB2j98r2EqvjHRPbMusTcLTphXuSp+LuE8MCsZvB0nXkHaI+EqrlPqlM7ZJTzJLdgEHTE+MIK4Rcd7MH4uVCLqJ2udkwf+N74/D17RvzE2pT9MPECqxLM6PxZR5IY6NkwweDnBlsSqKj+Cz60yuiF4TKYwwi9+W49NoYvPV6498yvqP7K5Bi0CveoqQTHqIMS3T0xXgdo28DSZqBow4TgIJtEu7UIaIb4xmizZte1cBLAaPxoxxi8Kv1mxcCcxIIqheE3qOIq9ES2aL5ElNTZnKRElaDUbNQ4+qFUYvikpri9TIlE1Dj9GIDmsNoRCvNypRj+yvUYlYSVGNxE8AD9RKNyt0T4pKQSwxjFjmJm1Qq8ZpkWCxjrZsZ7W2bvoUby0JiWIIUE/6IjEtcY8XS++LcYuISsJOcY3xjlUO64mVx3UMh1U6RoMMLrM2NQ5t6kpG5N+OxatFYqpIZsi6jxuO6E+DLtwmeohqSlHVykt2aupNG4psrxoqrmslqTRN6k2birvzSuDQTnCNAEnYzUR1/iwqysBMCIzObhrKMwhyTnsOLy1A5kjGasm31aevC5IdjIuNvmyDDwuQXhaSSDfkmI9X9E+O9bGr9BRODs20lWqtNs9PiWOMHRDK02fzmEp2y2hk44wLidKoiCAjDBMtZaNGJX8q9Qw/L6cIV6mArxd3/XfHsQ2NUBA7DsGvWsIbqRCW5svxzramxY1KKXGv/quKLAGoyisliS8lEiySDc9PiM5cz4jNT0v9LFJoNon9cWDjaM8ybzKx0i9hDkhL1UMSDpIvYW7ytjkzQgg8y0IJsmHdTcCULvaertzL6MtGk1Ck3SqetYIIZXNJsf0rQOZJDJFuvghrda0GmmyRbpps7PCrCALJ3Ukm97OvkrQetK6osvSurE71Ww8WSt1BUrV/VAliRszhaVKxNCmDCabMgYhbCNb29so6azk0fgyBjfm17mvxaXarL+fFqMsM70kJa4GMCWmnNYwpibSQ5am1ZMKMLolu/MlqaZDkerJyZx62iW2CZbhr6tT+NTepStAIidx1vjG7Cz6J/whubbayyWmyY4myhAnEY4+p4aPAj5Dz7M9KZUgrCwyoLzquhCrL8VKw0ZSky74IsY90IulvBXeLDTgtoQzNFMVVWwmfDEZJpssILL0sRC9LCb4NGoOZauSUmW4kKnAphs9jNTYvz3NcKHFoEZSur8jwmwlQ870oSDVoL0b0l7GZbygvjqtAj+epyXTrCw+qFhK3r7VT9q5ybraucmnJbxIJ0qv0Sj9I16stUPsMP/ARobsJX0wDTylpQi7ZtN9Pt66Gi0OtCycFazas30wyDDAuOW0LJ8NRPwqIlJSn56mI8X2wReKoyWEJoiwzy8pG/PYSDD7TuWpjCQmz8Q789N+tBuAYQx+sITMlaHLwpWgnCSMxJWwrN5yO4mPMymMMizVBCqOMLMwQj7VRoIgyC2D0DwryD6CPtVVBCYVp2s45cXrJIzN6zGVsZwnyDfJvpW6Va5VqvI+1VDrKVWxnCVVsVWyUor8NszfFbElw5qimjfsGCG8oz5yLgi9Fbb+I6MunCUBOrM8KapgqGGkg5XYKfKz6F5httiociQC0QI1VbqCLdWo+IjyNtWo8i6l3im8hI/VqPiHazojLesp0oPrKgytyhFhq9bWJDQ1r8Q0iM8FLpwk9j41sEIzoKSVqjW1lbyEiZWupcmVuDWqgjA1tzWlgt81qoLMfrOgs4PEtaiVvdW4taK1u/3ToKhyK3zDFqsVs6Cy7C0WLEy5Fav4EJ6updLsJdWouKoyXWYl2roaJmalJtNoT9q55i/eq7W5rC3ArPw/nrpCQGXPzDP0Ltq5azAEMMC6soQVoeKvtbPcMuwqTjXGx7Wi1jlet2s3yCJ1symO2qw+xAQ4g8Mkl4020lJaO/3QBFfIIYw3jjBCLtw1uCwfItYoYahcLKG9Wy2hubVIprkcJ/YuFcJWMWGvvDeNMTWt8qgcjfSMlaJGQn66/CdgyiQp0oINrV5KDb6CJl+Mlby0O3tRnCYNsOs1vDNVrfSbVaPd1YMuFcsNviG+gyCNtfcT3qCEOI2ojaz8PiG3X5dVuhSrjDGMsnWq1bDioHI5/Cr8Jao6TCSNO7VKTTm1TdtARDKdM5wwPSXhvpWF3CuyJbi+AigMOtQzYrrUJYg1NDSKMdwmgbdrNyNb2kbrLMSvli4Bt7CgRKXILsomCZLApNwwHyiBv4imFCxxtvjLGDOqiM2rdDCQqdQgbrEqC6Khm5jVUXQw8YYJsrTSUoD0L2Y6ojmOpspLdCVmIKK4Iyt0KVGZvC26GI2izb5kt+gm9C+iruKgfk60NaKrxL60L506LTDko1G6Dr0dPM0wfCZSL5hDtDJSIHMEbSu0NK09/dE8JqI0vCriLlS4z96mjqgjTT2QsQmr0j7VULwk5onNssowiC0yMWYtqsxxijbfoi4wWhs6Iipz3486Ij2bK2K+cZDqOko1ojebJdI4qjd8H60hIZHKJPYwKF+tJQwxyiqOK1nSojMsMDGpUihhkjw0mi2rESrJfK67RXuBIZ0YM8svyEw8OapD0af83mg58Zqhg8oh7Su4WM2xbD+tsHNPIZFRq77TrbR9HozDmzR9BkYqPKrYLB8ekbYYrEG9g5Sei5Ip+bCrRVg9Pjvisfi4fjNcMFE2sbN4peY+mDcaJ22nQlkxNrG/iY8CppggIrDtplmvA8V7k8GTTb3KXqGCsas6SK2kmDMdv9Ihy9xGty0mQqZSICKqrTMdvG2njDxto5WTTaCIKCGM0iKoPe1AoiQCzDI9igv5qDQrGyRqpyrFpAnBPRg2kLCjjQS2yNGdsMoggrgG2xNXmiBdqAOEbbPmg0ZWJSWxmFsiXaaYp624Z1btsMo4bbK+NLGYqid0IbLEfCW4idQ09bjaxyrCwj7mhN2sM00Ov2af/EEML12yo1wMPJ2+TFNSInfX/E4iKcJXizjYOtmBEavUpQm20CYJrbpcCblEPtSuSbXQLEG09KzGA1QgNd4/2MG+d9lJtHfIYr1YTAA5RCYALko8iadfwUQ/pCqSN0QxXCDEPXw3JCsCLMQr8jH/3MQ/D8TEOrMxZDOx2E/IhDvX20Q8bidf1Ws+MDx0tpA8Kb8YOIIvhCL+t3Sl9sG0qngr8jfQP0IsRCBMIt4wQTjym5AvnD3gKQImiTEYvF/W/rPoJZIkzKfzJfUgLrP1Mokh4b8JLMSruC2BvfRMaa71gk7O7qn30wg4B9p0WMrAxDYIPzfYmqltojaBjTMHOwFE/DiFpe3ZxtXRgtIy5DcUU6wrCxABQY01SSsf2A7I/8tmMFgtIaCqzNhS9tu31BBc3NFgKTg4T8vSt6IIIUumNrA4CjNmqgFfTivEMEy2T8ZkJk49YCdjx+3U38WWkIQmjjTh20Q0viaEO+S2alZQLJ/ddKwYprwu7KmEWtyvKDokOfg3cK8sp2PWsDeJJgxPeDADq/Sy9s2vyKmgzqC4KVbD8DUOxvfb1tXLjq0eKr430CqxyS9kWOQ0kDrW3YFEwrjkIWxdjC3LMHS8XNAhTwQpQ64xlsqglF0ELaqiFDvIKgFK6rK5J2Gg2LK0s3qhZD+YKWQsBDTqv2A3aqKYP7iiP8Nqt45Zni03zu0dhDjRLTfK6rGsqqS5uC03GFwjD0vDqsgmg6GQKXfV0DHqpp0UZqLEIIAg2KAfzPfVFsI4LPyrn9YjrixZnpKOLA/bWyDLO1s8zK1y1T2vn8w1E+gjI7jjSw5K2zNsQPY7Mlhcp5/UgCaOOTgwBCf5vjmR7iBf1EksayRELystGDjfxokg7ibJKWw4yTI32cIjbKcVrO40jLj5qjAoTkm9oA45sD1f2sO0+aM9ojyyvbmrJN/Jj8NZLQOrPLJkI1aLRD0wq0GHmCOMtvJU39bysUOkbiJjv9/Ag655tOA6srR33bA2vaFwNXm7Lr15u3gxX9rSxS6zegGjrmOteCDJO5Aro6aJOEk146Vf3Ek+NSZJIMxZqyAf3CsjVp5JMi43nKJZrSsxeYDuJGswus3Jt2xc2zZ4MY4yA7erMAWrqy/5trmbBDxHB0kr9jF33C/X9jSrNyO6h8sTpI42eDJywT2mxoiTp8RU7TKOOtmUk7YfyQ7BQ11MVXilz9XGzPi9TEm2NvJbzrJ30KOxaqaoWWGA5DgHwdfA2Lt9oXYoLRuQK7Y2rFtppq2PkCkWISOofa1VP9fAuKmjvtY62YiGtWy60jLqyPfbSCWkKKm2/buDpe3BvbA206Qvhq7pO0QjcCz/3/XEZD6WOE/eHDhnIiFSBqOPzJYp3UgMVzbRiD6DsOrInKSkNSOmGyFjMB63b85jICmVN8kL2eIk1zAxscEyTpgG2DO+C1Pmi9NEE1SxnB6+8bsXPyUwyivrx0854sQx0co+BzrRqSIratSxnUuYyjUiOnK6Ij4HOAS5u5eY2so/hz0dvUohyiCiPdHEs6Jc1B2zyiZY3c0ryjLSLhpHK0QtKwch4icHOi0//FZbP+Iro4WiOIqkpYCtt7Oq4iKPhy0pJpezoPQ8WTDcJvQtRT3dunO5W4JzsnWPXC3qpKWA9DEgMStFdC9etHOxvz1zuDwym0dztKeVO5RzrZnHqLrxgNudazg8LPO4DDGy20q5UUwqz4G3HazrloMpPDLR1h2tJ5o8y5ZJbdiYJNG2Mg+xqwoW86AJl5jfradRpKa3NNRBvwS7SrCzoYNWpqc8J6WNBK7Mo4kZYqSvLByxG56QWtSzQ0OBsRuBDE0LpXJDAb0ErPKxC7rPKoStTohir2S9crwLtj4bC6SBvwSku8CLrTM/BLdnM9S76Nm8PguySTqLtz68i7YTKIuwvr6LuL6ji7Hdkoul0s2Lsr6vi6w1C4u7frrUoGA7edIYLVatRK7+oHLHiM6HwAmoTKmVQFI6NJcLpDQEeSDMJU+eOTrEpg5bhEISO5csMaKKPdBIfCRUXZWZSauOTEGmrrJyxw5BYlF8LTcpj8QcLKk9fDLLpAouqT98LOkuJsT+u4RG2CzLscu8oS+OUo09y6fBo9c3YaMtixwyUDzLqHS1y66cMCFCOq4V08u88jXXKxwvy7J0oOMt1jqcOCuwfrQrpdqhy7DEJ76ky6TapiulTM4rsVq+UMU6rCbZK6MevCujXrirs+vS6TJy2S2JhFL0vpyo+jI6stXA7CYeoVDS9L++tUyuaiDQzGm3almy03S0mTT3W+68S7nutAksljWqyiPeXLD/Umu0vrN0o9DV7rnPIQGgeqxTOmurToK2LmuwEKaw1arDSCdrvRC1O9n5LEgrkN2MI1CxTcr6tgqnpqmI3Eyw1jPTucbG94gZLY0/uSZuJPmf6SEWpXymbjnQU+ksva/pP2M55km5PXmkeTFzPDc2zpEuNkRbAyZuJBuqqSIAJOk9eaOXMD/WsCmmjIyrlEJpOB/fYz8rLJk450W4MD/Af55pPWMqazZpP9kpqCCTm2kzaTvpI4y/2T7/3KzDuZgTLKkpebVjNas+vAypNVNDG5lssIA10Y66LTmoY7Y5pb2rOamkIEYx46TGJokt3LZ/3aOkuapwJ6gi/8/stFzLACm5tKQo8ryluIOppYekO8Yo/9vfyhAnZCy5vL2zSQ89vMYgvaRbsWOoW6IiQFu0w6xXSmOwgDNX2fA7XVGP3qU9m79wJwA74iZXWE/QaCARwI0sVNpeItGuQVvboeQ327nkMeQ15Dn9o8NSlClBRwtGeMIAN/rNuNAUIgSqblf9q9w8FCUEKJQ6FDuG2RQxFDEYKhQ9O7k7rhwlGDM7vRQ5FCjEuobRO7cUOnQuO6l+SNggFC6YW8oslCz4UhQmAau+RpQ4Rj6UNVcePkOUMZQ/kDflUews1YkRg8gUAiXMMWErhaF4RiM8klzHVTvS4Y2jMREpHbMkOQKqiCssvqGPozb8rxs9yScdpUrQtipsPUW7/o2hsJ27oaghjaGinbwptcErHCREvvwzMST7rp23jSlEvSwzxCNRIHIznb2SP9Eumqp5tD2zwYtBpPigHaEJgBWX7aNUM/u5WTIVw+ipyadsPxIijCt8OnElxrblge2zuc+ttusrgqw1rBLdxbV5uxC8KaFtqPuiDDam0IkoYYIhsQwiIaUMPiwp2K1tsjqgjDtFuSwnqqAbzSw4PqlOMeWh9aEjwcvP0SNesKmcBCel0P/DXqS0PuWuuKQlpR0s6bWcMAQ5gdc/m0WomjN8NcWvlicbNuK/Za2HvM+C3CJsPUOWxbs+0vS+rDv0ucYhTjIbOgwxZbLOJIerwTjpFcWw6jbho3u/B7sw2apCrDpRLUraraMHs3S5QYlLLdbQ6i+Fv0HNYRN0sywtJtl7tbqMLDbSTpstJCvUO42uG4/eOzDN9D4sItsoFK4bhfQtJC78NWwo1jZsPXy7NweK2I2px76DMGuqjbL0vqMzrCpkWfqOJ6qNuCelJ7V7rSetJCr0OCerJ7kkKVGZrCl4KqzZJCSDiBbbv87mJXgwHNzHsngiNbN0q9bD7q+grEW8hIzus6Cvoy+sw+stYiswUdO5xiFxJKQ6PDMILg2rMr+LWI2lp7UtrEgww9aDKo3DvDRnsmewNsxnphQiZ7iNraMjIMJKuKaVvDFntbwv9KlnpVO+gVGNuKaO/CWnofQzp7drK2wwKjGWMyQg/D94MGe+EsSkIJsq+q6Xk20wpD3eL6epTjOnvIzOajOIN9QnljejjyGMSCf7vSw8pl0jVYWtLDOnpsKpCCUyLvzYF7DqNBezVoIHrNhfUZtIKIE57a6akAep5iFtsyMrmihusmwz3ro9m/6F1iB4tRK7NTvZqqQjlZWxFAI3cKGRNU2E7itUvXhAQ682MeEuk6iRPxq/Wb8sU7E+KqsRN8qm+6c4KDE83MRxMDgqmKxONIKuZKdexedVA6iYpKgk+dl8vIOgmiz2Kfml9jV0JWEwf4eRL3Yp+bOkofVBQTKDuPExWRnML6msl6ThMqldBK3cJNwm30PEq5ZO3CNRqaslorSnlCS4LbxETPwlbaiaIXnYPD7Xt/u4NDUUppgz54vzp0g+VKmYI1W70afIJ5GskKtLquS5dC3iuLwo4r8to8ww5jPUu8M517JXvqK8SQaCzS22XVktpDei16L60GKphK24UgsPu7hgT+YnIytOSvqqSCk22craA82jNoIqbDK+kxWrbrJeyvqriDhIP4gut623gGeoAzQm1T8+yC+nsizQ7qhIL6MsTCpUoWItdDnuqaMslj3WxXgpdCmgtuvQrMKsK+XXKytRCnesQiCnv30uJ6VD2jbQgswNLe6hZbOnukJRkz16uOhVd7dMz6mpOpSbDEg7jsc1xKQnfS2jOKbH+rsIu0g088luqvm2gk7AUITMQjMWIQwa96FJk+iuxzc/TzeqvEQ2O/0uBrbgtwa1Ls4GoAMyBrqQsgaiTMRWPDVDZtfmNFkgZDMfNUgrDrwfKZY+I8kPqViplipgqRY75jsWI0ZXXbQCPmW7vbisLS65HqMuv56jOD3pty6/Hqv4ISPX+CwkLNRNW6XatNA7RDlbqGQiBDy9oBvaBDtFutu7fK8PssQ67y5gO0Wjt9MDvne7W6d0oWxEBCghLr2t1teDrSQr8DkkPlumuqmkMhs+NKwsNZO/MZuiP1ekRDvcK+Ak17N4PpgnGDLttBy/WCbXpU/dbaRjsdesY7MxuE/NLap6SFg817TDu9evj7fXsmQwNKCwO+Kot95UJxQs0DE0sUO+N6M9slguj6XtrXAiN7ebq8+nhDzcKDSq5KpbpzwjkC50uIID+KSYLVCs0b1Io5Qjr4r+O9G8c8QxrkhHvDEkVH+bBsCxybcfPCfrhNwz9lc5L/iy09gYLFqphLxZItqgWCjbGdSwCbuS1RG5WqzErVq2ybNassmqyF4JppWGU05BqQJMAbIiPJ4tAaxasMmo2xm8NZYK2qcJq6+kkjO6Pkuj+6sqmHLNq5pjMz2rewbYIUIgRKF6OuwARL5aTXI7wdpjzdS7TCzCNBI1/VOJrUGpIdDJr8muTaQznsmyxKTaFIG3b7HEru+qgbFxkcSo9J5TW9pZQiISIim8PbjpySHT8aXvru25QjbxvAvaRLRzJ6RRUbGlnAzYhtdvo9exhl+8IzuCgMaKOKKLxh+tp0avnYV0MYZQs7iPW2mYc7Hw2HOigNCzug6v2tPiIFPQvC+KJ2TSLSDHAeI7JzFKKgvRSjknMcojJyTislIv/0BHXqI3IdLNIaImUjmiMtItojpEsCovSECiMnqpE0dKO4YF0ig6paIjIi1oKzOv/12KKSInIjhfuRmNMjLCTffJ0j8gP1g/q7jnmV2/sbDZP2aGICDiJ1+5cz+iKdita7ayxcgoYrS5mGsQGb2FJjMysqe2PgywvVqyobtLqSWjSXm6sc6AolqzCgupL9Ig47KdiqksZovRoPK2o1/pONOlQkRyrjtcaCKTTy6ua00aMVNEmiIbWK6rU1dwME8+eLSKjkUnaC4bTdNQSjdTUz+2wrdzRz+9P60/sM9RP7C/oD+mT1iFudNK9ybnWq6vE1CAM2BdqTq3UZdBqSzrU9+91IYMuEUlLicqq2o0jaoepd+7xSyuIWtc8rooxNyt7y1GqVem24Nm17w91IxOKh06CiQfprRYk8AdLWa0r00m1g1ZLcektSqrlLlGrUrFf7m20bmZ7V4cKB7Jv6Z8s5tGZKPblZSwHUF2PGSkka8oL5IwWyjwtFKnpKC7RaS6y1EyqZ2OTiK9Tk4ro1F/ud+mZLv/pny3/7iTy8NRf709Uny4oaZkqb1HTilhppu8R0Vjpt+0+NwLOBm51TyhJEY+bjOYtMkyoqK8udwyuCCimV7A7jv8O9/HSYz1pV/S3cM5O7EgukQiNZwkgGgDkvWtqzWsOryprDq8uV7BvKbe1GO5gHsTqhhFjj04rxbWlClbMvYz3Dg7Jzizji/2KECuFoK1mA4vYqLuOWi4QHKsM3m/ebjXrg4hCJIuP7Ld4ztZONwgySRknWolQGGplaO+WzFAfls646jrOK47bjUHJ8KUXDTJPLQ+0qAOVlw6yTWcP4YnlKBbMtrYzirpJS9Go1CaIfQn2aE3vJo7D77mug+qaTg/o8YH8qeGiHor8qPGFPKy30+/vlUd2T7VuGoe8r8UxiB2+N7yurLF8rB6yvKhcyl5oUWuBTu4Az0gySiwsqs/RaVf2FXZgLNwUxVQP9Ac30MidISDmKslg8OBsmM24qHpNNWOQGfzp4BmYzSuK2MwqZPyo2Oe3t4MubVDDiBapbRdG6/AzK48EkY/wedX2zlNjbhUG786WWe8jiSu0vYgRkv2N0PPqbD2JgYvdicB3BavjjswsIO6b7pMNfYilxzbKEvavK+r2wqmFEu6pe40uqDuMF+2ptUCtcsbKCP6t3I7dcWSx04gaCT8qLqpDs0yu5LalLUh2jKy/7HkRPynQ0oICM4igNUyoXBNq7IoL6vXiqLK1Uy70qGvu5Kyw4YoKp7GkrsRhRuxErAhCTgvq89puAu4lYAQe5mciqOFnRB48FgGpny6X7qUqrqplLldkKcwTi4nM447bhoGt6kgaMsAcrKkVyupKPSIIH7tUZBpDLsnJd+o9N6lIlq0ojOuMwa7KCjvunerkbSBjk45D48W3FykUGf/o+COTjVfsX+uAk5QY+CBUHSBiVB9D4VQb3uNUGETuJPI9IgWxhOTUGCT1wpSfKDQev+wI5hyxky0gZfgaPSQyDDTVsk8OCigKGYo9NM4PWdTpQLSqB+uEHkPm/gqEr/sV9K96xQO2Q+JDDPQYMagMHzHqDB3kqrnjhBkM4EQbiBFFynj0COGl70av3g4LY0BhigvC0PcpLgxabD2xRquECw3zgGKGq0fhAQ2GqswbiAtAZ5mtLDJpqIHQffYGq4BmvivMGrqr+q4DbdzOdylaq3mD8OjcarIKbcntLdYT/eJtiq6PrB7R0SGoOQtGlUwbq0PPpV4ssJX3K8Ljwa6WLKtkovVeLZtz5OvC5bkW5OgZD+LzxSstM2fuXBpK9MjLcvMDS1wekmp/L1Dho4mfDzerJ/IgSEmpeSgZLpjrleMoGMCM/E646zOPgio4k+GMqs1grmrKDm4qztuNCU1olIROUkybDurOEYlfiq1ROox7juJgAh/oTgbngB/2VMgpqWuwRYTTLdA3iV7USAzOyV7RwHJCHzQPY0yy0L8NrkfcSjSPyooU5KSMNA2PzcWrLUmathFgzG6VIE/OH1R6KWuSp1Wy0kxJVAsbSBxKH8cD8dwQkdGiGhumVA7D0vHNmrb40MIeKWFW1wHVldLxycbqskbCHpHXAdcWSTHXEhig0PdN2E1I0frWmdOgDfDmlC4S10dljagTowdKda3AQ/bQzqxBYFaKceWNrzaR5tZQkxum0c760m7IpfL4K9/ueCqyGKjUAmeNCCyTdKtSHLHKchq3IXIZinQtr9tgKXWWi1vKdEzyGivNimU+9dLRfpbFSu5vlxV0sgvM+NILz/jWUnUICwzsNHKa0vrwP2BKGYoaChlKGETUShiDzfFs5xIKGH10LtH2r0WPSh7NqfrSTDaFiC6QZ6dKH4410td7oeqpv0Xu8cdP96xSHao3rW20s6oYuNZDyh2sWNIDyHS2UnBIKacxQwI1qAtnQ/X5b16hiCpfYZ3LJ0kwGnLTYuMYLwOpTtRZpigrFMmu0MOq4tFu5JwsBtD1rm7Va4SEDJUzWux0CH5KN0t+9gbRvtA5yP7UOh2lre/RlEulrFoiedDR1rChPEiCqkWtOtcFKV7SEDNsyXoenXeB1ILUfcuIzY+HgdBo01Ejao1qGPnRg8o3T0LtyslzcGKvgdP1FC1XvteKcJDTT/SLZabVOEMYLb0QkNaeE9fPmtIbzjAo96rHTOlMxhybZRbSKnAy1DeubtIe4QHSV9aByV7TWnMBy6NpH4R6GbSpuht0qQHVfZdXSI1pljSiHzfOhygSaSuJZ1D3r29RchTbZ+YcqUkhzgt1Fzd+TjlSmNCUCyYZ5k6yd16ME5SWGUXVxbGGTP2SYe8kymYapMyfpW6Jg5ZaSXZLu88PaDdSRrfhjzMI/sI2Hc2uTo42HcByJM04QbZIHM/Ezc2oTAi2HddsVhjBSqTOUnSK0W9JXjckyfY11h4I1rgpRdALZTYbWcr3UYRl8aeKi7kyo6pkytoZv4pCqToIF1AooYZNarEGi01V4ursCMH2NNZKT2FvQU6tcWzLN2bU0LZLB09wZkZJrM2MNPTWRkn/ixmkc3Tvjs2vLhxzzezW28vQra4JA5KKi0aRQ2zMDp7yaU4FF3zrCUh9ch6Ms2S0dezR1xGqi24Z7hwOjB4ZVOnIYe4d3owZTd6PMq+l0bKsDo7bgFYdLPUBz2623xSmHjtUUc1jLUOkB2OL0jus+onAd6X3zrDQR5qP4bJPihr2zGpT0gFwSUlH6gUL4vIAcQaM/8hrIaPR4sxcz1/J6qg4pe1NaU2M8XtKPqXfzowIRfH/ilXSjdNvjO/I+0qPFezVH8ysCCq1cUVpTR/Jj/aBHXhk740M8IEdDPEOjUEcH4oBcOLPTdALC97n26ViyFNwLS6MCUKOFmuNTT6K1owAS8/Jzo5PzM6I4A2lKXDlj8n/isZ3dozSoSHl7NIQNQ/KJdGk82Ebmg5hHeALIhxJTqz1JdSk8YpLuI9o77DLFTcj0IVJfNJVjv0WvM3K0oqLhtNMCOlnIAos1vzR5mk01RrJyGZ81A6Ju67P8XDltGgV1pTVaU4C19Yf0Rgt024eWtNuG6XVUR5mc24ayqzOiolJZdaqdX4cZvRV8D6KSU8gLUlP8U2ZZezX0a2mbLjQSUl0bQhpJm5f4nFO8UkHS/TUTozXrGXQ9K8t1uLPsNMKT7DRB0jM0PtJptNvjo3XSRo91wdM1tWxS/XScUik0sLUjO739Znj5ym01UjRzA3iN3zXEtBOS9MrahGi1YxsDAzTSk+NqRqEibzQTG0M0ASILhhKCtIfzM3xl3Ya3G2+GXTRIePk0v1PoYzKC72B3Neck9pMemAHDHTRI5FkyGDSYXRjlQNPTMm2jN5olBo9kzaP52dajUzPws42jO/JotUvz8PRgK80YaLV3ZMAqHIoA4QU0S8jAEoYk5aLkrfGh9NJ1kwvEJrIj4v+cdZP9Uh5HIBtuRikMEFzvLS4bUOMDs05GeZIRfHWS0LK+Rwiy6IfeIuStMVSeRiUCEXzZkgscZDs1Az5HXHJcknh4gWqnUmFHFMyto0cSEUap1c5HGrQ4LER4BqJnTWUKt+pnaAaiISqN0kcbgbV368Isj9XpRnfF35OQdP7L3QKom8B0YjV4kmRQj7iVCnbzTCCIgjg48+nJhrAYz7RbPc1rq0QAyjy0DprStPZhFlKybBKjYrXcbea1wL3qh8WTNKiqtI9NYPOghzPt/nRmWJzQ+TR0ch5GtxqXhlc1RyTosnBzfEbxhtvicYfcUwXycwL8h5Cstxq8h5ZHkYbNonyGtkethz1GO2pbM5ScF5KIU0sqhkvsuIC0YoZ3NKbdKmIxBpJEnFKCkipT2oZO02qN8BrjNMaHPTS06N00tOL4uWC1YcR8U0sz97xwU3xpsKphOMnzvUYVkrC0M4Zz4o/K+Lkxk63ajyqsFArZdYdpvP2H610BretHhzPhk2m8B50QrMBT4ZP/xJ2G7kZHvHWSe0f2Y5IYEvN1hwdHTYcAmZ2Q0Zr6OIF0J0dysjsDecRVDL6l8CqTKxCsGzNpooT9mKsQrBiq7y3+hzRGShH68zGTQiM6apAqe4fhkjTyXjKwK6ubz+Pnh65HZYe1NLmN3BAgh7NKLci2vXfSYBpV2VT9jESpU0kzUOla/BLpYPItrPGrYIFdsiotDPxbPN9HISN3/HFgaVPcs6hpfLI9nVSz9EN/6Kb9PANCslVSvLN4A9lT2eFHRCTD/vyAHA4CPelK5fYSuG3J8+ZH02PnaHDHyfNPhkQDhUVULcb9TWT/h4VEgBwG84IGtNP2E4h0xwK2Ew/yIfLgh/ejhUUQs+jHSIbTNfjGe/K2EoBdcXwxw9J5QfOwRuLzJMf0gsTH5ikExk6d5LLkx/ZjhUSAXM4DJMfNtdjHNbVzc+XrAsskxu6GL3g6aocShkVLqYqKO2osxxrdTssaUt/zmPLSAhW1fAKVGrMTbgS1KgIDTrV1uBt8x/vdfDzGIlLxSQSHHsr3Q0N0vMfuNBt9hxkNfV9kY+PlE3K0yIrrIrlSgsdVnELHKdh8xx373MdntEALTrRaddzHxDT1fOsjwRO3h4WIUsbAWCLGgBxtagrG2oVix2PzcsYr8lUTTrSuG+UTXVJKx7XYMscwR2LH9iO1EoCj1Or7Y/x44Armg+/SCAp5eVwD9ujzdRyC/53iir9SonNxmRdoUopVUmwCGjVQC0QCoBnwisqbd9O3OLfTVUB1xS1SNOoaHHmt/0fwiuqa7AK/Rh0C0ASWx2zrmpt8i3hrQgIhoPbG8P2oaTiLOKOOx1saVdmEMg242ppffdgLictfRs8K7sYfCmDGv30EC3fSIFKwC/VHsnmw/dZ1gccUhX9HYRJ+xvESHsaU/J00ocYk/V7HdIoV48L0mvy+xmL6EAYtcynjdmpZ4xrrxW3p4sAC8cYIyuniBJrZ40nGcH2du7nj0fwpx0/aw7UF42NoweJF4gjSU3AXmUWaUXwV45Dd5eIEFJXjOca40+PzXWhl4/br1eOwE5DkAsMpifNKvdQlxgkCA3NjUzcCVsuVhGrYHeIbmZ8DJsstu5rKZA1N/UOJmYM5fDC4DQPUExY6VBLWOzgSs4K1xi5rtbvfiat9VcdwiuvbRBMC+tgSswKlAoQT+stxfV7K/sqNxyRCDca0+oQTcst4k7XHPcdMDC46bvn8O3F9ULmM+5rLFccRxzWIaMq306XGunhWytGlINxu+VNlaUqyRbSqr3wtaYI1NPMi8pvYYpoyEh2RwsoZdMHjv/00kMrLTlL4EnosvJHG/UFS+cspiaZ15gIoW2nq68cKdbATtuCfi5rK28eCwuvHJyNbx2e1q8cxNZ1yy/v11OvHWhtbxnoblcb7I46068ecRfetPWnp1eHy+EQHaG75Yz2h/ZEiEVNbx29Txv1t89hb4/Ir81ISP3V+ZSLyHSOUEg9rlfSiEoQMl8YLePkj4fIadJoFwsryG4l8EhKaBX3zC8zdcrp0pcffx9by+fq/tSLyS7P0MrJEX7SiE0K0+gKyRclN98YPbIAmp7U8y6sdlBPdMgYEhXxJvUfE8hIO0vay5PKbdMLz3XQwJx8csCaG6LAnqX2k8i7Tm22681UqfBPFkvkbsX2u061zNlqh6/TyORoh/OY5ISmk8ol96Cb4hqfGWQqNNRTz9TTyEmM79PPB64990Ak+6ybznPIXyyjy0X2k83u0WPJ4esvoUsupGom0BCectHwSaU1jxkOqepl4825FytK082S0ZCfp1WfH1fuyyfgmpCf0J8QnPdXkAjjyfwV28s1M3bXkJtPzuCZoeRQnGxoE8ivyUsqg0jAnYxspfQwno2m0J+YoECYYo8iyBCboxgTy5oNMJlQmRF24JslGvCbshHwnepte/DwnSVLMJqIDrBPTPClzAaoziuly9mGtc1tbv5FFc5k446LlczQ0lwflfWdkoXLyJkM4XfJ9OFw4VXLnBnfGI8KueYtzdIVLmEoTEgIaJ/YTuJvs8xrz3rEjcp0HUiYYw5wY6ieRcqXG0j0XGFVyoGqnxtH9VxhNx8H6p8Zxx5i4n0ZICysrkUbt+3FGkMuYxhsqpC05BqQtWyoRfVsrD/K7K+J4ymNYxlDKy/pUOz7U9idD+xTHw/pLUtGjM1ICButSnfyn8+PjG/vwhj/sTCdb+sBZ2/tPbdv7ajQYy+7UKNMWJtnYyuOT1cVsyyrAWAUHQGzky84s5OOcRLjCD/ujG4k9OKhfw2DVVwOv+gDTWUodIsDTESe1e7NtiUuNPOtsT/sWgjMqLCy5SkPy4SuVWRaZuCK+I1AnO/iEbWkGdNOYywkqdoqt+51SLROJWIz12TjVcwLrsQY5J8WY4vWK+sRHb2XZJkL1QGp5JnU9EvWKc1WauQbuo5JzLazCNNkHVPSPuGejaPVxobuiC62lm5pNpZpDOd2TDbHccmOiVSZ1J7UmrtN1Jg0n9SZ74lxyoqKjB+5qOZshmQOilfVWkquHQZmtJooDM6OOPBOToEbYswfjTB0mR5kGw0bicmi00aSlcUC066zzh0BrjTRcTRpHdCMzhs0HTyiBk/MCoybr4o9J/UdhktyybzTKPKKi6kzUIgAkNpmPoqMmaEaPuN6TEwe/THMmBUavo+IDmMlkCoEnbPq7B5Mm4Bm9JuAZfSblR2C1kPiIg9wZpjyLkoNHTyjDJ0ib8zIQmgCDTIuZRnBTB2yDJx2wazILox013B3f48uMCfKemWhrQzW9o4rjCDLgUfMyxwbnJ9QkK6LF1JRtxyZIqbOj7zXTPEZGw50mR3qMnOobcm8123JDA1OjCkYDou1HvFhDoxdzslIjonOi0fjKB+C8ppqoR8eh1SYpeHOjDVMTosCaToKM+jQkaEdko6WbZKMAE0otezXRq5QLmuTkC+hGIbwFdAJdE6Oim+NT8ouD+VejO/L/onTT94ckA+aiSTyBJ/wqRHi89AQCMOJ+qxQtIioTTIz1eFJyImai661E9Eip9XNmJkGbBEqHEojDBAMIx8MTNQK3zGcTwHsuh01bzOLiZSESrnSpst0D1cSOizlHw5s5RufjcIc5ikB03waRahGyjoZ4ze51xdMU9fsFr1oWC7PsbrVNY5u1m1VGtDFazwY5a9QGkWvTiiesjt3R0jXS30N4hi9aCgrGJ9tCBWtS2m60yqIuNdgyu4e2Megz7Kdbw+ymO8JrtVLaa7QTemu08npLtXynjLTKovIKBzFcczImODIfE0zMfxLhpMxawbl4i5hSQ6Q+U5aba0GYUicFB9JZA9IGK2qkTLwDVzw0u2yHwGNyphRpbIfWWhZ0cNXtEy892FqHRDyhQa2p8n60p3vFtFjMf7Kl6mEKpobSzeW1Qr14tREKhoaaE8I8TrVLwpS0DOMzamS079yxtP7MQHS6M0uzdxIhh8SG7s3gdWZ7zHMwQ7ILzQMizJ51+VtGs/AytIPEhw8Z53Mq4r7ytxIuCm0CLgsvtdSDeIeKoxtHHQPUg+B0TqbOCr8qCCJXtWLt1Ouup3a7ywUCB8mHAgdOhwIGbQL3IcQCEYf/OY6nJDiZaiqiPGHgdHwdXHP5R1+peIY7BLGsogcUFTlHVAUWU5xxLfSFhnP1OltYp9qwcqKDbQIKV7RKpqlGwsxpRgyCnmqRpyFThjH6h8nUgNoDfGllaDkdk4Pd9VpohjPDGUZmCinKj1wdwAnU6+QdwSmnBqKwB1yaOac1aYmmDdVJpnWT+nodo2xlK3vNk2mmmTMog+tHKIJ1kqWLBaf0HammuwNFpx00+mLqEuhpJaaTMmiCcFIVp8sygoKX4wkK84fqbVZGd3s7M4IKWzNSCvk1zJsIKtsmPGDNp2S8QyYwaZL0YyeDUOMnnJkNRz6msLUptTgjhzTwTU+j5VF7hsId16Nf25yZjEbkhWCzu9h0TOJSrJtURyQ5H6ISi5OiiwZGcUT02FoSKtJbKwJR+5jthPSQmXeG1E0+o9k4muok9PBiGaMIpoRN2614U9jrzZqEOOCn0OOfLMSYLqJlDWKYW0YySJ5rn8v9dOiaJ+I5hlGiCgpLyzsjydRnwyrzGIZFE2imAeNgEyASqZO3zYXjscI38lniWoJJKlnjEBIiU6nGleQ+1Dnj/+nR4gSbZlIpxoqDaesJx+Y4UeJp4xy8HcbJ4knjKeNR+uVzatlpcyyn6LRKE5+rU8dkhsZM9MbpBg4Dh/tJvZHzInLqJyC1gmhuAlICcvIT6CCxI3KV+yDDpDAucy4DJU2aJm4CqiY0splGQGb2he3UN5j9crVHPXLL+GBmCvyfTGzy7jsSEQTGjJpVOnXg8Ez0xhHsweNfEnc9vvIUmaH8n1rh7G4DN9I948DKdqAoZ2zsOihKEtXlaGf2E4966hKmEyHtyfNIjEoA6iZYgjhnGiYCPClyb3t2wi9orl1FfI3aBVEqJlQ9Z8cZ6qzauMezwm4CJSUAq8YTNgpKExEKJGZzemD6P6cfeoV8FNmBpYjH2MzaJ/OlkTKOE+ps9MbJ4pSyKMYEzTRmSbhPe4jHfeyAZtpbNMY3Q3aH52lMzX+mT9LK/U60AGJ94nFNQrOVXa1yz10qHG4CgNowJxqjUCfq8vtCfBNeSkAm7XVZo7ATRaKnxu3iS4VFfIX47PU1iH+7EvMr2TOE5srjE9ELQ4m341V8WBPM40niaaIS/Nw0xhKEEomi/BK4E0V6KeN4EjPGLmonmoQS17ucE3CLZ5okE01bbBKyiqwSHceW45hnpyX/6UV9KmdLmr3HihIdxmvL7YP9xnGaNcaPm4PGT5rwEs+b1stkw4l8CXpHIiPG0cIS/f2aVhIYRIe6xstvQjXUI8Z1Q44C62yCGTJnocMEEiXG2hmVx1fCOmAYErkk1lOayr3jK4NzaCcsfCd8eknj6/ybWFgnJGKIJt5mBaNa80Aq7XI8ervGdHudc4x67+O88xzjwspiY3KzcvI7mgryw+Liy3TjJlP8yheFCsuiE5lyEhJaZo/HFXo88rRKBsoiE9ITQhNJm3No1dyME/ITrhO68yl68hNwgu4T3BI1elwSGXtpfeJUBvMDE3Wa5XJsEg6sqXw5euTynYtoEnSHiaO4JzLCyrRJfVfKfBJnwqJjUXyEplTzutt0J29CkmMJfLJiUsoRewFmtCqK8vF9YYta8iYSknTxfSTtevMMJ4OKthM9woBmXiscs+anbEBwZ9vs6idwgueA76dO261m1qOkxoV6VWauh6GLkfIhiu+nMsPS88ebkmZ14XJm6GZDE/VnOMILcibaPCNmErl7VhK/myNy1hPZZ5YSp8ckZggSQ2aRouhnEII+8xhKjhNr4koT2DjKE8em1BKqE1kSygQTZ0YDNhKGA+JVYv3op8gSAC0Jegr82dtOZ4DkJ+KCs8cgA2Yi/TF6+hMjm080Yf0hE/b8wIdnxo4bQWYK/NinnXIBa3miMMcHRYGKdv2HZyP97XOFo3tnsqPb1K8yr9NhEk/ThIqXQ8gmbhKXZyP8yRIhikD9YYW0KldnOGO8/UAr79In+pmjDP1WhbincZ3Ew7ESN0PEa4DHL2dn8gvjURPxE7PScRMbmpr8de11EtESCRIL4l4SN0dJmskSgEuEMjLsLhKmSgubQROr4r98a8vMcrtknZvI/N4T9AMkKuOtJConrPTIK2brZOYT7scXEziLQHrAkvAzxxNIuycS4Pxs46gzHAYmoi5EG4R5yhgr59R/izzHNIrWo7SLOGKkihbbvP2hVe8TbP36puZ7APyvQ4QyRir7MjD87cOFrFYq+Oc5+AJ6LOqo2/CLZnp/srUmnVhsAwFt4ooZY43y73wy2jyKG0RQMk98Il178mgtaFPVEuAin/PNivt9IjyX8yUp+AIzw+KK1a0EAiwz7IKUNAN6LOapWiznjlx4AqkkE3zMx+yCeAJzphzntE1yAwKCZGEHgmQ0GfjmxsjVFOfdpqNraThHjc99VASxC0bGkJkU5hlcwuYJXTVqEIuC53wz4ufHfPesyIqz0jtyhr3a6618+YRGxqJK12diq1WyCDQMBjtyJOdxQ3yKPdyWRzg0zRIXfHXkX3UbPPWEUuYuwwd9euyWwqASMS2B49PlVPr9i6cygmx8O8Is1qsHbeZr3BzxbOOFh6IHBgxYQmogDTbLB2U3J4ltpwYi6KeKZrilR2ZC5UYLYrAZkGsyBHFFo4vbc0uLxqJFYoiawYt3B7J5kGpSJtStwtoqLJFjSw3OgxgTeBFGQ6Gq3ksc2gRqBwYTTA+KCx0ewzX950yWQzlSOuvHG1tjxKKni4dyPrO6x+zw3Ds8A+ZqiaqKarWaKi0Wq1/UNuYe86AyiXKgdb69GifEo6TH0SsExnEq5CayuSiiw2ax5l5gUieOAtnqZ2iAZls9lBMKZRdoLGb25sO1cefwx8nmcMaJ59tNOibtxDPHUH3zbHhmliZuA4knevKLKjQskeZWUHnn8LL6JvYnFXIpJjPGRGYxRiwTheb4ZxnnJeZEeaXmEKll5x8F5ebF5uVyJefF5qXnVeZl5vnneBHKcs9yuuZW0mLh0yalYo4k5wKV9MuERaNGrTmj6uneM5oqBZJFowZy2aLw+V4KVoNf1UYByaOb6Yrj0Kvfhj3ms1PUJZGm9mtFxScqGcQD56isg+f958aDA+bD54PmI+dD5oCrw+Zj5yPmVoN5koWLdose8+HnbNNjxhHn6sdWEgCjNee26HPnM+Zk6bPn9hPD80xmM+fT5tPmS+fL5tHnC+flfCkm3BNF5v/ia+aqx8XnY/P5c2Mb+X2R/HpGLBJ/rVPHugo8cRVzIF3Vc+9SHQL+6bdShX3Pp3EmT6efIwfnu+cr1C9paLOb57XYhefQR5XnQzwsZ4vnGfPM0HQg4vpm0kbqXKPVONMjuXzuKnfnViuP5o/mrTjP5w/mD+f35mUjr+cqI2/m9+ZYCNMjJ3WqI9p7PI0rOnKN2tOY89rTGlLzIzqcD+aaOJs7Z1mNIq/btlnc0ydYhSI4ogBzStsaU0raslPrQlPGE0qSaJo56KKnK60j6mkaU4SjdEemIuXHRkRJ+knqxaOeIHa1qiOzUt/m7+cf5udLdebBK/u6ua1GQtGlyfiqQ9mrMjM0NEEHLq3VXUZDuA0Mgn3yKXDgazeiMGopcAhbAQdIWluiRWKAatIbwGr1NNBrtpiRY6in2Uq4FxYQXWO4DSVjgUXIp2AFTBwW6y0HsWL9JvpLqBfQ+bOL4fu0g9/1ijMMFgwX9Beji0wWI4vMFrWZjBbMF9cGrBcsFmLt7BaAxRwWdBdS+2Hne6ie8gikv7qz5ryQUeebNXwWfBZz5rwWC+YCFovm/BcCFt8rghaskfwWohfCF8jHRef84/jo/TT4Z6v7lef0NYRnhCdasv7pFTX5c8HqA3Mp6hHYgrPPp3j0T6ddNHIWQPWn5zW1siYZdRF99doGkLvnhxmn57Y0qhY2NVvnVjSF51Y1B+fFdGLrBGeY6PTHy8d7uv2KU+YB4p1nEeZJ8hSilGaRKyNyDxrDgl5gz8RmFwIbpsq0Z0aajhKkowTGlG1e/P66gefjcqAZGhNu5sZmeqIqLPoTWUf1UvaE3AMMsmfzmX3hp9Ule2YCXXYWf/N2F2UlPXJxK5wS5sC15o4TvNIsZ2m9WF2sZshd3hd+Fn4WHuYBF+VS/hcBFj+mPhZBF4EWgRZxcT4XwRbx82SjteZoK8Fo4vujmxBbSxgcvWVn3SPdZw36sRYKIyFmCX3dIw6i3Uoce7QqCReiwrnacbk++NwXIQq/CiAM2tqrfVbY03Q8Uo1S7FJACqjyP/Iu1C4TwistGNIC7g0TtEw62OCI8+HTKBfCogViDnKho1rgygcv0zi6Z1I9aucDpnITAmbqRTJWg6ky3pMOZ6/Yo+Z1EMastoNhMucD8ZNQJu9hWOSt56/E1Gbu1AsdHebtmlzYC1PzR9wqtOk9M0UWvwYoF4gKYzPtFotGneYlF3crfYefm2ZzhNDlF31qdoNgq3uS1Re9amdTfGkXMj3mtRZB6RZpdRY+jXUXDRcQqwZyjoLNForzU1IK2K0WCthtFlXFgdU6cwwqTTmpFjFSMCT62ZhTt8W+AQtr8jRLFvSHZAlLFv+TY2v+6It70jQfXBhSCxY/7S37TQXpoA6L0Hs/GLe7lyluszIE6FqByUCziCLLdEFq8pHB1esLovgyizg9QLPZWx5Vmet1C26zRxbxs0zoua0HFx5VeNN7FnVycEPHPEobhrDKG3ULdxe7FudKUHkxi0bpRnhnOJYbsENGAZxFzosYpQOYAW3Y0gfbs7PMQsSl5vt1dVTLCYtyhQCiRNMAo+fH2yP26cRD+0wY0746q+l/Ft4n9CKH8EBDfAUcwo/DzixZIqQ0L+qV9IgUvyNqNSSahizOwsny1chbFxTS8uUiedsXhyMcu6FqpKVHI0nVUEN7tLybnPOoeXsirxeIIyfGONLOdVTK9QHY0vxDuqsMgsTSO+t6B14hH1up1Uayu0pYsIWrs7NQQjOzjWIHHYbTiCKztUTTmTlPFvKQ/lJCQmfGL7pnxrHClCYWKSQyjxYWKgO9i0rgqGgQLJtaIliyXSM0lokXTXTLfDSXwEdZ2jBkn+f2ImzSsUe6++cY5oM9IlBZ+eZv5ypQ4yPExmbaz/JlIvrGbNPbbZ1KwXtcULLT8Fxm2mCyndu2RvMj2LP80hej1Je0l7XYERcAqZJ50islI+bSZSLTxLLSp7V8lkEahtNSl+8FI9X6I3rS9JvvBSuzRtuXtOIiPg10lpvV/NIa0lrSQdicedrTs7KG2kTSetME0/zSBtKy0uYb8tKwh9Ui7aRco8iw5tPaljLTb7QZJ3AwZn2dU3maxujrh0U0KlIPh7gqKyeh2QOimp0v4ho9FPT8OfQ11tMVNWBHT/mtJrKry4dVKll0drXWo38nt2YHOLKri6OKq1pS1bSgRvNT5pdq3aHZAlPMRyujnzRikufMKlLnzEaWKej6l2XSDAoWsinKwkpUmc60JWMFtFSY+qZGSXqGw+zXshZotOwqCvvDigoBl4oKH0OKC4/tTbUGK0W1BitVtW4rTbSmi+y0idP1tQaLjbVzWT20uHthNIDDpgqtehUCl1syoitCL5znSzYYqnLfMwAyVJqx8rdhJDmntfhqRnHXc0QjzVJAYqt1r6PDfIcWIPKjdFg4F9K5l3fSeZYEW7d0pagA9HxmAPRsmhd1Saw30mFMF9O0m2WX5VFf08FM13TnPWVrTVPM66N89yAmo3vSRnBel6PS/liqco37Vqefe+EKrlNCvGN0XgoKAhtEdqex6Ggl+3Js2q0rQErCzWDr8j1g63y9YOs2phxyjfQ8cgAyc3Rx3aWTl3T9l4AzvHI8oIJy0lwDl8Rn+FMILXMS4l0ep2IzEpPBU3y9fZZCbVHKaencFzILIOd7Rp4TcUr5rMZjYPN1SvNq8LO2gK7GywWe8vD8/sxpraN7JqyQNO5ieALGpj8SgdNMUagyWDObdMgyNfNs/ctZWYTA5xrM2PyU5tQigRLaYjDm2mMU59qia/Ph0iIyMVIUOpMF9se41JQ1gmdlCgOn1UvprSI8bAKdej4C7jkRefQDWObJpmCHmPFU6xqDVOtoOFgDDmJk5qNseAJTbOgCVAst+bA1fW3iiwFKY63x3WYLxOkezBUDKxviQUrmHktvlxqCz5bqgpPnAZgXSgh1EqFggmlbp3oHQ4DrnK02pjpCzZb1OgyD36oOWvozB0VTjMoztabqM8oz36vKM0ZCVlyZ/RBqaWWxYi2WsFe2YkQEQGukyJFjnsIwqtpDpMhdYm97iWJjlxy645b3S3JzMVF7qxLMlcEhMuNQ5ie1csoGnWaBMp396XKH+pVyqupwytlEvjMck8ZKmQf3kl8rLpNL/C8qsTgXm/eSbjPjky4zMrNbktriXYJHml2DZpJNct6TafL+kwP9G5Mzh1tK/pJS4o0DH6uoyhRWKMp3kpG62UXgYkQcO5l/lyUzvhWdU7j7Wasn/caEh6L52rOSZ/0bfCII9TJpckCqD/lI2ZuTXFeTkluSHkaJsm3jl5Ndfd5rpiTdk5eTjFf09TNESpMn/TNzYlZ0uvUyc3yeoFgqPTMMY4B9A5HMYtlEZ+MF22zoBCpKJchjC5suk4oDi5JSaM0RJDOjM51SEzPua1ylJOkwU1rgKlbeBxTdtTQnBeRn/QJ9jLC1WQ3tp1DqAOpJNBCql+Pq6CWbvgZ2SGi1CBqLU3snnoeV1H9l8zPinJsnhQdpxVRT/yVbJ3NrGkfFknmnQFNLqHMCTRwxmij1QoODy/GwSApS+oT8c6LkhItTdtsSEcgLlV3u03PU1ITLo3ULM6PcZwcySxvvMgV0eGh209IHRfxouLmt5qMvModGlmtRsIz0vqn+ki5q9zIk9AfSToLvio4pXzI3Mv+jc9I7o3KKO6IXMgejQLIHonhoi1ICa85XwBJdOL8yEE2/ouSLv6IS+1ejFQufhzL7La0SAslca6MeVLz0ATSIY4JTkgcMRlg42EcMWgV0tFpgpkE4nleXKGhGiwsOl5cppZuXM6WbeIp/44yK0FLOVhvlW7IGllbTOLJvKpMbn5rYsoaYKlMwslayynKGmKKiVBwYsyEib/xFc7XYnFLmgrai9VZQbTOio/MrA9UFh1KJqWEFLzSLG48nrVbaRu8iNFNHU3RT1aN0U7dT6kc2G9MyczzzJikj34blViAy/YvEs9uyNiWOxPET8cog8mEiBQQvZ5OCJ6yY4uODBv0g/br8Scu+c9rr/3z0/X2ZhMrDVmzKL2fDVj3TVMJdGT9G2v3O/PESsQOLViT8bXxjtENX/sQJc1zLFW2Z/T3bg7LxO4mryE1kkq2yHUT/my79ZprsIhNFCDvw/F3b+f02xLaiOGdq/a47Q4InNGqySTucIhyy0FJZkmxpFzOHVgzFTJLi64lKqjpyRA2yXv17Vy792EONsgzFgFpUsmjim1cRSqU6j1YbVzHHIIYnl1erz7KfJxYQbAN5JkwC81IJB6+XAhFvl3EGlDT3JEC8Cucop1Q0wjSFsVQ1kAV/V0zq0Qa06ooDN5cNJ3bHQZiUNX6acVu2x528ea0zveJzzfohsZzmsqnnlvS1yQZ5rXEH9AOYFmLqzEwkI3WWyooXS4vtoKN752L4EjxKwlay+pDdw03rqWXV0vqQ+Ab76ktC/ar6KpDCRGaUpnKbcEWV69g4bbOpwg8GsVonLBI9CsMcutKarAYoPGwHSpubVIMs9ullwy7DLd1bi+HSwbIXSkMKtAfjq9QGxppQE0yqvWqgaDj71DniwxNDt0r0JxIMAphYVWrDA6tGSirCnYrCa8FBAOL6upPs8W0K6JtYFsMyKjSCNnkM1+2w7cM6uy7jF2vtsCTXHNYz7IMsmCuKS+mzGdPGWxnSepvUB/DXMulrVpytHwYGB/IHpyyTy9zXhJIk1oE6/NYO4y1m3WJKsgNjmjqaBwqy+oumOvqKErOTi4az6HuasjVjAvRLyujj88qbWZqylkuZwnkzhkuA4nZLjfwmSiQHm1WtMtKyb9GcIyQGJrKvZQdYopeahVYLe2Xvc/3V73IwdQ5TxzRfcwFSplJnxz9yk8kHs0fGdlNntADzZLSMdErSxHUxPJlqSWOFiaDynHk2Uig0wHPP2jiW19Sw0sezLHnQ84WJMPKceAjyMNLw84WICPPENagqs9GfR/Zy0klI6w/V63Opid91fbXfdUO1C32x1Dpy+CSZU6K1enJJtKZzO8xjdEy1BUatOjqZenPh6qZzU7WyArMj5nNH1RZzR9WWcynZVnMD+xty+7PI6ynYdnLvs290RdUe1h+zMgpe148HlTkIc+pyYNC+1gmHD3Rg0P7XJtgB1mDR+FIlh+CLE3yMqsHW29gh1xc7RnMaU2HWJ7nh1iBygdYnuZHWnNFR1ku46dYLuTHXFBo+15+zcdeocyWWJ7nx1mDRidbqMKLXL3Ie+G9yVmRMcnez9HM18okQjHLXOyj8/fPE4A+zDtdDwlZSbzr/crp5ltfkc+h1LSsFR8pk6ti7syxydtZK2PbWrcgQ8nLdxlOya07WrcnO1lsqTlLt667WmHNu1xTR7tfUc1XX1kWfRovyxphodcC9T9NPasaY19VQvecKyBSueeZS0ydCA7/V3rFv1dVGCOoDvfyytHUFBiDqDCX+O3XXn8Wwc/m98nLuBTZTAjk4/L+zEOTA664EufLGmADzM7130idrk9fGUuBme9aueGh1AjiscwNWpaWe16pytZd1k+eLCOrIVid0mnJ+13CrWVLIqplTsxeF1npymVNlkznW+Lm51ti5edbou1lSWekF19epEdck6UXXqunF1yGtJdcuuxpzJOmx1kM75dcU3ZXXopMV1gdco9Y3RY5zuwrjOuBQkXLHxRsWAtJkU9RbZPQRcx2wMTVu5jtzvmbbo8KnvFljasGr42ss4Xd9SxLnchJ1B2wSdHtyX2rhcW/UUz3Bh97Uu3Kbsqaivgq3oM3zQiOiy5MT23M+cngL5lPmxgnzxMO/1uxX9Ojq8swS/pLUJj6T9PNOHJ2CVPIF/F+rKPLOkl3zAyVU2NQn45NE82eYz6cq6nvnhDeUE0KGd2kH5hlFTGfr6v6T+XJ+3ExXeX3nkwoWtTNX0rl8rFeSJy6CZLOZZnjYVXIVM8gSglvvWLVyfZPTCulmGDZi+yWzU+fsJNYHQGejSPSy83JS2AtyPyWHF6QxLVxhbaQxSZJ11aQwzQ35fa+6n/gLcwVrhq2kMOh9n9WkMaNJ2PJrmQ9o+hO+azKiYf2CNxoTOWtzZ14XRUQe/Rd9i9NHZjw2O2aGumYXVOSs2Idn77z0snI3d5mkxqw2vHRAy59HFFzgGNIDaUaZa67DKjcLdW7mkxNgIBgZGjfLBmFGaBhmctxFuXS70sdy3XXf83xzl8SNl2fECcothABhejczvA+ynpAAYfhTb2FC6qUTdpoX0pMMXpsN5TO9FHVqNmcGQ315RvV9INW2m7fMDppTl1XgZVaR0iv673JOUt2HRtfRDcbWLjZOU19zj7N7vM3W3YxJlrvWdkmt1xaJbdcWiVbWIKvW1oLyXdc/aN3Xj1z714NHxlMQ847WR7z91+y4A9aSRS7X7LhD16E2w9aSRCPXr3Jf1zsKqsrV2gUXbvMfHWAnJPT/UvrzP1F48hT1AjeratxH6vNW2CwmJpzj8hgnPHrk8u91JCZZzRjywlf6nDrz+ThSynKrTGbDarO4VPMndM4DCTZ3xlNVvBpU8sgmyWbXjUXYtvJAZebyAerFN9XqDsqqys41hTesEiXrFXJjIDR7WWZAZCwnbekr8xxwDNBYJuG0uTbDNRBauWZAZaTzwevksnSHZUla8oG06TasGmk3IzqsJ+g2BRda8uG0QjY1NxFs2DYDuY4DxDYFF7InFTexNn2q6RdpfcsYxDcuNIfWavMzQOg29Yc3NeryeKta8zjdwzZGmnWG8hJ68g7yuBv5Noby8TdG827z840CyqbzD2uQJ29FyMZbqxbzsX2W8nLzU2uBZw1kVDLk8+uHkvz28k2GDvPvajry0vNO8vXzTvMpBcd16vJwu27yGvJxgKkWqsu0V+FpyfKJonwKSfJ3eoBm0QowEmxWhu1tZ2w57We+Wi1mT9I+8k/S76cqbe1nKmzqJmZdKecwhn1U9MeLhDmTZGfBXdBnCEx8NqmmwdJ14aZaAfICPIBnPvMCN4f7YUfp8mwKlGfasFcprHNH1zrzx9bO8qnWTYZp1mKc59ZinBnX9vKX15LyWddRhkHXThA31obZC3WxcAs3seggtt8qruOOcA/XzoiP1kDkT9eWks/XlpPR12Dk23N582XXzogvdbpqH9fZ8p/WTYaRNxQkqstj1x+0ohK0jOS1d8c0tLfHuyI/xui30vPT1o4FAhO5Ixa14/IwdMrL+VQolkvz58ZCyld5+cYYV3KEWLao03F8KyNyhTzKh7IDck3W78ft8/3UWLey0xi2lqoD1KvyaLad8zS14WaFKu1yyLZqSeashRadFupXGb2gCuZGgKZvNdDGbzR/8t2nZSTtNKSi7TVKLB1GAly9Vn/y/JOMA0iyDFkBow0aQrC9Vls4/JI6m0iyfAMvNa1S3aeamu018VJDAjqbPJI+xs007/PTMr4Xn5pYu6ALjlYaEU5W+3KuV+7UV8RjoiR40lOMA72npGz1Jydg7pbtnB6XOGpjogJdI6M8Au6WQeae0yqwwpKmI60mZVIdJ6q3B+NhF/bSpiK5mmVSuZqCWOuGt6F+VgYjlac4C5u6ZArdo/Y3ZHxDJZ9Gq7wWWrwKgVx+tS6mqdOEYnc2HS197KqHfey4tKd7LAPkaWw4VrYfN3i1gFdR0ooNBzeGogRpdLbPcjIKMVO10+OWNdM2p+B1vuxRCrZJieO90jjtQ9I47UanCs14h5lbIabeWmmGelxZW26nMCxWhgvDhLXtVLu1/INhtezajjRiPBqnVWOZDMS04Ivnc4TW0s3khwkKbdP2C2G12rFZasHs4pIJc2XKIbNsunTZ3hu3g+Ajfsuo05BFL3weGmACuMObRE7Lp8Iy6rqLpENE2tU6+9oU+7X8HDqZtw4a7pMNyp/qs/yZ/V4bWkNxI5bEBEv3fODLKatGy9Ej00vkI8cDhrcqhBdLX5eZqJ9s60stbaYDnG1LfEdLOJu2OiqznZk1bIpCafwrJnt8YoI4OjGr+v2WqlDFi0MWSgxDUQdY/NttSwMAOi063QdY/C0qLTsPbNr9CEbVtgsDMqtY/Dfn35gSfU62QUOdyjklhbdupr9KbQPjfGdznZCjAtamvDo/tSI7pDVkht7KpIcOO2O2icbXQppC4mTTggSGlMs5R+NKoYbJts+0fwNTBuswmMvEh+NKQHT+OrLDmWuYxCW2PGkON8KjyCoVywWTawNaylUMj33wKu7RgK33RgY6sCr1yrdHUAOfLUEDD0fjfB2Gu1WD/Ak16QJ7J1LKR7bOyyfjiH2dy8sDmMSrR01Kb+LkQrmnCbcIKr/LcbZrAjO3zDfdRGPWZ3kpt5J0/bcidK1KHHRCOpOz7Uu0ctDKHHQwyt9qhMWeCuPbxnRJxlkCc7YTfCsSg8YxcveDIqfDS+h1jcvEAue6SbfOc/O37nKTS8+2kcq0dI0Dyz2scrG24XygdHe3zgL3ti94J316y3Hnm7b0xsPaJMduu39pL6c5tiHyncqx83Hm+7aJ5+N9OXM2F5+3ngItg9BnqbYB8sm3pMcVuqVthUTnt6Rn9Mq2Esm2kHfFtzXmg8uH13E46CrXfMu29Zt/S3D1QkX3h+1KZGyDt1WaYAOZotQMu7fM9ekCc+NuqnWYEwOkdwe2EusFu7oqSHZNrJ99yPVJgkCrjZoVyxL0+wJ+oznL7wOXg8z0xEJPhih2N7cRRA6LVGp3tieKeHdnixu3W2MQd1tiQjoG5339kmuea9m28Lm2ym+rXMbYQv7n8HYLi4e3tIP6yrrr74MW5mrYTHf5O7eD5mpAdwsGvMsVY799xweLY5h2h4vXtxK22xdDyk9mYpsw43e71fzaGUrX9mdMk3AqpAarWCSSW6blC8gGD8se4vsFHLX6OuISatfLY4CGBWdMkt+EOuPRxKmKLuOowsmTLxfeWRQGwRLS1tjDHuIdZmfjMMKiY4TReKaIB+mil1dXymg2rlmfRkO29+KRa6YTWuNJud5Zs7bYwp51cbM+t0GLPQKaEkQnDQJhZle0UmMEAh5YLBiXElpl82PjtsdV9xJfuou3Lhl4hxY478tupuPiiqMTEg6Gw+OOp0fLrnZOo923cjDoK9KrR4QKt5z4BAs7E2pSFmYqU0iNv9VZm5z46rb35GKTIdoVm7HCgOFNV4vjo0fZMU1W5UPdhpVX+xO4sp6iwpI5WexSLfinszvjd8qdJxPjKAubm7GikZnwWNJTVGLSUjlYOAr7VRB1lgqNSo42bUNvh9ETUEv8dRNiwnU24vULdoKg5yJ1rMP8dYvjyDbeEkELZEvQNxVCW2sQgp0TuO0ISl+3zjghcuhKZ9T53H+S57tA6Z4KgErpA/JUdQsfhAp15XdMd8R8iXNjpXmiLCeYYpVni4SsKjk3WCsbNiIqOTZs427zTGP4hyVmACuk80+7WvI0ZPMcYvNkwljzfgpXulTzV2avdHgkIMOFNHgkaaNa8mwrzvMPii13CzavB9M2rwZNdzhicxZ6ACp8iXKlFjTjtmdxsjPGEPon47rKPd0RZt/ScXoayy4YVss8Y483a1MFExbKHMPZZ63nt6aEEgPjamYbRGYSc2yEK7ASbCsjYpuIACordscSAOsmygAqVsvNdvjHp3ROoxJnxouxi5YLPbYtc+w3PxPJ8wUlt2fKA2Ir02Zc4oBnud2Dct4oh3cdcgArMjbnEh7837rK/YqiPXYveGgS+zJ14BTClGf4K/s27XaUZ7fjpMYHmqL8lhc1oo4TzCofdgwr02e+ixN32ZnV14msYiuNdjY3mCqlE1gq13Wcekhz7ueGEgD3eCqH095Zpjfxi81S4+OVlnjD3XyrZtez/OrJ2gICqbJ/s/kWwbmSA78H/DQ62khzVqKZotIDlqPUtQumBaNZFhgq33fKfKp8hVnbs1kbv3ZFy76KUPyhstnWP+NsNdI4TqPMi7fi1IrYw/cK5xJQ/cpnoNfnJqV6JP2QKv20r8tH4zdmxGIA6ynKaaOEMmwqsQoHyyfWQcfvd2z8WIISFrj8fOOEiu56mszfiolxwHbrV5ZXZ+JmSv/0syyA5k5FkysYDHTiXE3YQnk1NjJ6Soz3yKqyqD7DKG1Gktf7CFhaS2exzoLv+/uqLONnsZGKnPausvz3v4KuSiurr/vbq8iqRqLf+yw45Mp89uTKkIy5Sn9Wf8P0928NMbdil/MmJ8vjw/GKPXtUerS7fndkUmmCACrTGxj2VxvT3EQn6YPOo3Hb2nZbNemCvUNTujO5qvbTGhZ3Gqyq9xhj6YKyY8r2IYth2/t2WiPO251ng8Jkp+cb/UIhiy7bVHu8o4NDd2fW2q8GzRo22g5s2HZM4XT3ly1J2gWibNPFe7b77wXlZjYjqhl2I1ojNqL8ox936tIYK7n6NvZDIq8H/SKnyyg0IiNQep/mpMMu9zjDLSMY9yr3WiPdQ/0j+3cVI052nEUrO/gqetKpihqXMsK0uhF3cYral4eaAfcW90x27LGRFikXyRqhLYWyZUJRF1z80ReFsu1DA0IFspYjEfdwwqrasmclQqEs7Hul2ywqPiqhLX1ChioGEuLDLKOqGIYrVXcSw/M65XlJ9xI8eevzO5BbUzuQWvSjebJs04Xc0yOF3M0jhd1TOyF7kffB9zCXxngXS/T3B4vn+ti0pQbgdF/7RfZ6SmfGWkrTxVEnlyOv+ucjkSfUt6/7ZLX04qS01mrVTFV71ffs9q7Xr/v21lpKi7JC9lixqUsBJwZLC81NBn4nVMo2RrjYT8tDIi32DCQZdv2L4n359vCWrPed9iVKK9S5SgMaumIDGnTiuhbEIn2D9LQ1SgqXbQfLsnY92x1DLDy31UOqhPKXTkrUtLlKzHXrY3DmjXUWS3YNFkoLtE/KonRn+8tkt/ogDMu0VktzIxZKE7R04pQmnmwd9jBQP3ddbfT2GGsM9msZkyuamw0HWAol9msY1fY6mtX2sVK196gK5faAx+9ZDVNRJw1SjfdWefv2hyc79454kDvbciz2pqOb9yaNG/eOeOTL93JmS1Z44vamouL2dubABmv3HRZDy7rnUJqE0sw0NuY3i6dyoap7c0GrLxvGq3KbDWOncrtjjhcWagLS0mxkRiosrqrBqj7Du/IqLSJrVKOfizwDdqo4hfuLLxvI94UWI21+d569S21Tow9sS6NyqicnjKvLozersdpCsTVtvychKsEiykLRqu/yYoO/J24bG4fCLS9tX2TgN8uDB22cbF7mhJcVmuFxcA7nc3AO0fjDK+AOeJsR+kxZZDreYGAO5w3iq1Z5iLcKWLvKh1IJ8oEztdmt9liyzPe12JA7kEYN9lBtx/f1V4f22xqED/XYFfZQbDf7XVN79ypQpA/wso329id+BvYmkDpsliz3ELLV9u3FxQaxJjQO8IaFBth0sLJny9QO5MtX5udLCbjKfIJs+3ot1qytu8I3e7vCT9o8BtCC8nquuwKmcIOCpzp7gmd8g/hbyWh3qxrNW4PYrLZIr6paolt6r5uPRoSspm06e5taG3r2Yioy2UpPw1XKtO1ggxES/6CvqhIOmlrXewv55FrnWudLx5Yhs1t7RGZKQlSCWntAMlp7QPpme4D6ZnvuC2CChwp3+9Llp4lcD6zk/0tHC7fKD9W0Z5Ns7rZwgj2W2g7CzFp7QrzJYyoODroczfWHtnqgOQ57EIsOeu/SXnvEZv9KV9KZ/HIPhxOMD2m4nnwqikFm0vcAyjL3N0tHy066wRInutjC/0pw9mRDlCWn43urZuy8F4eqBWavqrgq2sPXa452/0q4KsQjLg8YwzJCA+PcrDdCB4Tu6/b3nuvo957rYYp2Dwb21g54YlYO/g70egEOh4PWDuYPPjAWDswOFqJcegeroMPhbIrL/mkFsjG5HHru65BayWPl24RbpQrJFu7q6MMOD1B7UQ5Qws4PEMPPe5BbMIKgKqx7lvaKasXtyfbWrMx7bnsIenp6kfbyD+wGZnuFsq+qg5tdg9FnfTeOusWzefZLMaJ8KooCm4H2h0u+ioWqfOKFq8jn7yLWokJDdvcLSiGKhyNIK2aaauU/E26zWtp3+sG7eqSnIq6iNQ5u90cjFxNElx73AkLBE7cifvfnIm922ku4QjTjgho7d8Kbu5qWsn73bQ54Y7T2+LGYD8J1vW3thb9E1mpdDrlKonRjg8tlANKHpNJIdOMcdQBDE/dAWmMrAdcXy0O04/d9tD32g7Q994HWQ4KytQP2Gzi1Sp/U1mq6F2hCWkebSEOCRdVZSpQn0Sbwl02K761dDnP3U2065/S2IbMHY5jpHqrIdX6qCrSGqtsjDWNdtU5jGyLP9kvNWw4R2LZCLlIyu2/3u3WNiuU0Zqr9NSprLEd2Qmd0v/eR1VeKjx2It3/3pK3ER58JDWLG6w1jVSov9+w1Ow9dNUGrXTSGqqP60apj+y5Dhw5Lg6xHUWyOtQxCWEah6jAORCk+i95W2yUPDgHTQauF6iLWSSWn0iqL9PZt4av27sji9uyc4vY3WFpLJ1iiPfdcPCPvWRpq5A8lbBQPetzED+K4LPc1htX36+Cgj5EJJMtZbDf7WWz199RzUSZUcJCDLaZSomfKzHI4D9RzrfZUc5MrJ1nSw58OOrBSdub2EOwIJEzWS4JtKw9tN4Z1Y3PGimvzJ9hzdw+RCS9szrnkqw1j6+HGq1lsL/Ydze/27eqhqoRyhqsGUk/229iGqoqcVWLwtVrcSI4XS8RHfPONimhT+I+OcJtjfeqhq4PMhquDzU5jNYakO/8lPet9rVuHy4NG84KDoLdCbE8PzonEjh9chNMvD8s2DX0vK+cObI4/CmPS+MoMJdpS2A5aU+f3dKLF9gu5USfAFlCOhdds9ie4QI6c0Uf2J7ggjie4YI6c0STL/TfIq/02EI8e0npLmPJl9+O4+A9KrX4Gcoy4D0ZFa/cB2ZMrgTTxB5/nJ8saUsmqyYSStsWLsLQ1sy8PNuvLg9wbDw5u6TVsjrSlKjyMguK0OicZQav9N9cPP1DUj4HTGw5YCTsOAdPGqvgdbw40EYSOoeu8bPC1UmKkj8x3tdbyaiaO1Kzjp/6JTmJsqksHcW04j4WML/YAc5qrZc3Ejj8cMA9ia5MHYmuojwhzho5UcIMtLw+k28uChHMGjxTQpw/LDsEqSdWGCz9TrYpA08hJR8L2YgTbno6eG4+X5CK6olb6nDMg0/Fino5WYp6O7s1Hw+XtkUu5irMEgY82YifDcUsXwixiu70Vwrqj1otDW2/rQ1qQI6IyJ8OiM3mKijLfU3IyvnfxUWJ8F0sq4gda8pG47QmOcEL5haCjmypc3Z1aBzFuG5HDG2sYQp0o0HoxVb8TbyK052K6d9yGG4KmgbM2hcnCm8KGG4sEyhvoPKmOzirw220ZiCL6zITTKGfLBM6zo8PnFtAzZY7v3RgOcnzLMfGPINqOuianlOei+TaEscIcvaLzcVt8289aMttrWpvC2D2mY+iXYoJuhOnD2qPYw+3SswSAIw5i/ENNjpDCaibuYrHCAjMerbXTS5cpWu/chyIho9zzBCIqYmgi2mJ5WhWOEkLlj9f2TlYqi5tFxUsVwuqCBMLJC/ibVGeI0xOO2kpsG6KDFcOOXSGP0oNQIkjN18LgVv7CUoLFtnOP5CP5C+QiXrfkIqlbINJCbJ6Pjl3MQlyCU49XQ2lb1shcghOPvgs+G1uPb+vOWsaPI44IV1Eqbo6G7FkiXIPhbLL9MWhkI3CYSMJiPO9TDZc2ixI9T6SW+zcKn+uwilb7nGfzjrZbz1JP09fDvlv3U8/TeYquXdaKd3vgI7pa+pphRFpc44/WW/dT1lvWi9jN0sL7jn1VFY4JUPJ9+Q+vwiFaqMN0Z+YbjoRpjo821KwTObQ9YrrfersXp4hqG0iKWY7wipgiT9KWsi4LycPUgoYaXvO3FtLMUhuJ4sWOLgqxw3TbxJYR7cSXtzZHS2SHAFdDj44KcE+BpaxzeMohsmU2Wl2iWqSCrZkfg7eO4etXjwOqT9NwexcKksNMzMaab3sqe9GmDGuS2efT6bMXj+mzTM0c1zeOultuXLpbewu0WkxnT4LK286CUjUVA+Oqd3p6u9ZaeppIVMDTiE85HUEPcn0OyutXtqcwTgIKNE4ho06nWMLCzW6zrrenezHmiCKxWl7zz1t8vWtbieKAIzamHY/P0ixPzGaxWtTaTE4QwDnqVDy56gxPGY+AVr+O82Ofj46GmsEA2o31ANrLVD+P2GfwYLuOgmxu279NgoK6J5EqZjaLi6uXb7mxKiMHtMqueMditUfUqgE0znNGYi5z6SojBiVKj0z9Dq5y0I4Yojb8FUsQhBlLwLyKT1QiCk88cwiO+Zn1t5B0CiYdKkM5n1IiTg4opnaz2IqPHI5lJuErLfa9B4k9Kj0/Dn0Hr/pwvKX2M9ev+jvXUSa1RoCOxpiCj7vW4o9qJkTLkjjV95QjJMpe+mKPApp19/m8fI+fxI33wL1841sF+yhF908pfPbYdQ5P9A/5va32cL3Lt6cOLqxbYGQdPqMEs5gKZp1gOkASUKK89Kfy3qK+yl1Tu6MJJ3D0oKOVm5aDVPVHUgT1R1MtrBtTRHcNZa10+PTiWeT0MGXeTqPEQLPmKL8z4ngnNAJrPuJfA/YiiVe12V8ydiJxTyizw486TlbTuureGjBieEezpnhHRPVzG9uskUYkk/zaGsi89U9TzpLyKhVkMGPIRk2tQNKi6s6DRPX1oh+Hx1M3mgZm72GlJ1tTpSbjU78C41NVm++HMKeA0rT1CHm5Twh5dHZIeeajcxvLtyp5VE/m9jGDF2ku2pKkv0NXG1GrtPuGg33DtALTGls9uayluF2jfcLkJWHaUiax2hyKItNKeMGqbU6oass6VbYzTQ7aiasdT7QCOvfNT4PDcJtNTjO45CXq9mVSzRvW5617xpp1TsNOtU5ct0EO6dhS9ui3rZXpgmeyfU6b1cr2m9Q69gu0PXoFnRr3sYKZ2S7aUIbO9jO4p7QnGk8X5UM4Ci1D4k5qSXHbEIZLTyzgSXSluAu0zRuy0yEbrsdidQ1Omdg9e3F1Nto1TnqZcdo7TiYrVxoTIgPDO9XvDrI50ct+rHBYvPbiNWr7Y2qEDROrJ07lqtKmkAwRC7WrC2oLHN2rUQrm+2sLX2QyVtKmKAyhEg04kCVjEvQE904MJB/BD066+yV2rIRbaj2qI2rFqgdq06uSplDw3xJQ8Q9OUPFja/r6f9ZnTipZtPf2qEgLlzo/V1T1pfswp9JhAaONEuapuU+l+u6jo6zuojhY9pM2q7aZyPVRvBDOBTxkbO+ruPReBGRsXgVE9Tk9TzJtqzOG/052Mzh2VkXI9ab7eU/R+0ejgM5Qz7mYcY9DcduzHOZZJ1Q1Z2X/T699AhDmx4DOaa2zqiDnKjSEnDV9o62WxiQjlsfh+qKLgM75rNknCIuZONYzy0Ww1w7GpM5sAqTPFOdEzxdsR0Bgz/CLBfovlggkGXO0NCQiRM+bre8Osg6R07pHiVmZyzDWwOdxBzjnX1bA5+H7sP1jq6HSMP2Azzdn/8XJu2z9w6pdEyNG6ryoNSM03M5uEugXs9MNNDTP3saR+7D9sNag/DAywM+YM+xNOIsYzmzP/Q6YzuA1QGuIM0BrhIoTq0mBwjLlFdOXZ8Vl1VQ0WaodljF2ZTzw/R9Oy5aBeHOWaVlgNF0bZ08sUsrOHzxIctVzCs8yz2K8SP1xvPmtAOyrlmnNHjMyznz3FOZuJYury0QXoteryaxGo/CKBoPii6b6JqLpmn4GCU9SdpkmJ3NxVkAT8VehT/GgFax+ubj07le49L5WZG0eVGRtVVT8Kw1kAU3k9Cy8vPXXFz6TCM40W2FPeVe7ohFXu6P5V7uiWFu7o4VXkKeXKB8y0Vbuzm5W50qGF7sLulKQmZnK7Js45uyaMOYVl4nL8jSlasDmJZfbliOn25Zr0lD88GKfCtzmoc4NuYyanhJhTfQDAVbBA8Mq2vjrZeVRzDJeIKlq62RxTHgDkHUBzgg08c5E/F0a06YJznBb8ItoWs4L3s+GoAqPRwWfRhiPYFv9rHWp5M73FhjPMvvwinXEDQo0NNUK7Oa+VuzntQoYzzbP2c82zrTrJDi8Av5XUbHZz6ssRc5c5emtRc/kzjczINaLClTOFzK063KLfIuxcNI3ODTkilTPJQp5DpEk6c7BI1HO73xr09XPEGJEzlBjN5fiW3yLNDWeSYznqyzs56ss+axtz47G6M9rQeQzSa3Yz+mX9AIC52hT3YpGcb3OfGe9z9lctDNJrJ3OYUzs5uyb4opc5kbPDc9fizrnO8oWKnsPRc3XQo3XYzVrLeqcrJaGvEzX084dkTNDaPW0o6c6f+bR+oAXcipqal/LayyN1zvCk8+U82NDNzokM+POt+dUl0kjd+b008gXniLuDBTakBecG9vPttLwFu4NsBdYJgfPwlIHzh81iBb8iggX5KIqraIiPFJsrUv385Afj1atayy2U3hLH4cUUoNCTGpJFm9Cx2paIgJqqOdjQ+v6lzvjrSEpAtqV9F4Ocqy0y91IZUKOzyEp10MfHa0aL8+C9ffPubWJgr5O5XVrLev79YN3z5N9386TNK/OdFpxtJfPubT/zrZTPSNq5tfPDxZiluL67zOGSFdDstJ3z2fF28f3zyPUT87TxE/Op7QPQjrS77Xfz2S0/84a0lmChr1rTuc7DfZXQhrT787CBWWb38+zsl/OhiwtGlH7bxfPzzkqL0JvQ6+zP8/Ptb/PmC5tpWAv4peUlyAuFir72bqWOKKH8fWCCfv4054jQiPoLt4iWNPOI5uyLRoOgu5DIxdrkfNDBnhm+4hr2cbeIqJ1GBuW6hPUJ0MZvDQn1C+rsuLTDizEL1Au4tNqGuLTinQeIoe0riLD96wuJtIgLpTTYpf4L+lPLC8AGDTTfGXx+yo0byOMLwAZpC9A04c6taOHOuNSlC8LxMLbEkUPx+po/xb7z+jSdC9pvXAT6mjTU6LSBAMfQvBa2oWkL+jTpC9Kx6wv4T1sL24nPiNbU/rWsJdYeJDTF844L7XZqC54s+AvHk/gLzhdD87JK2c7oGOEDhgvA3S2IrfP2LNwL0M9b88wRwvDz4YsS5c6SSuwLypR186Pz4BGmi5ws6gu6i782nE8mC4Gx9guwC/SeA9DA/NmLusbKIh4Lhwu4vqcLt4WifugpsQupKLcLqy24tPuFwwuOBn8L44v4BfEo4IudVPgFn/zeKMSRZu76mm6tmIvvNOi0pcnNNv7Ou7D/iO9TyQvurYyLyqwsi9+Lh4jurZyLydgCi9p2Yp8Si7mL6hqGC6SpFfOdFshL/fPv9fGL2hrxi54Ck/OISpPz9ImMC8Pc3AuHydvz0gPS86/G6xKIefCLcYuxuZPz/rm0fsXcjAu53L/z3hrQC4GNukuWzwZLyi4pw4TzkovK8fNByn6PghQFzBqbi51xQC8ri+r1+AXM700L4pZPpvbz/ICRS7gveVCy/rG4SzS9k/9IhpOJ2znz2p8iXMQ7RjzSquJWUV8TNvFmLUuAjTiVE3jOTxY8y0niViCsj/bFhG14+2qYjahKhj8TeLIY3NnZF0yI6Hd03XJO1pmOcQKsp0utvpJ4kxtVQdtL1X7dS/NJ1tmGj35L1pn89dPdShFBQf4JjUuUAXN45pMLS+lLMWtBhbh5/MXc9RW86I1qKoTC4sWCOv8Vn1GIxN+NzZ0CFIxNXfUUPNHxV9qWQOvKz1qs80Uz203V3mYU2dGKy9kNWGOWQNq2Ysu9ytHkr/M8y6bL0Lyaxefa+o1coZdahsWKwobFhZ1My8k2bs23pY5xEddbSzGh+1qVeiZao89ajKZOSM09UtlonqHay7uNhMLB0ZzCsM1yxdlo7+Tawvzh/11+bPXqWNr4BtWpzF8+Q3qNUOHay9w63S0Jy/ZoGaz/nwqimbrqPJpYnKMhupGjvGyXBa6mqpDjtIg+qKtykNnZLXrYASaOZBrYNzDYiAMa88urXmM2sMKAlgIQWI7zhQWAdKG68014W3hUwPo/y5YCTIzdEbyM1l1qbKjUg7ZtINqj+F7XTeIrwHYQS5LMZ9RTA+yDld4THOoFP862jJwHWiuk9dN10t6sI/eenCPOINguzp7iHR/WjhbSrmYgwC6+jKqamt6e4ZrexprSIMaan57czb/SsZpmOepDyVtuK+0j3uqF2qT6nPW3epKQ2yiKg66OWa6aK/0dMJPuwseiselydVdffHOb5JpaoWHjOoZAwBWJN0pp41qIoMGrUCSgWvtOsVZRxLcDcqjZEWbIvUDDhzBAgiWMvjPtUN8hWtBatFrEaejSSatCjYqZEiHGR1300wjd5lsr2f1f/MMr/L4xy8yCg9dnWoEh3xp4WvqOAv1Ho0Gcq51IzW+XNqjVZMRptKSOYcSAvokCUeXvIFqy/gKrglqtOkWUpYW0riRanXEqgoJalPqrnUja+/TvJoVko3SxnIH2b9OX1AOi2Wr2WGiW5HHpm3J6SsNcrqwGUqbmjbtq3qauMN8OIcHTdr/eU3r+aRWrxabTeuxcIzK/MMbJo9aVjb9qz76ojw1qzQMTaqwGG7DzrwSPaKb5q48jRsGNXPZYNvrdxoSPJm06IXGz0iPWm0Epo4pbrI1ztIyRhbYgJgiiwtyG1PTchoN+pgiGFtmGxsKwa6OKLazBVcZw87OryPZqt6zNs81WucWIa9FrXIbMvoiGmUKUhp1qFIavlfATuldwpspV8KadaktDg8X9K7BKlj7Brhl6oS8p1qEvZXrV0/sru4dZ7DGr6/FSlbuHRO9SD1eVvDDPpdEW+j69yB+WsIcEevpJE4WtAQXMsj7oa77W67OXaoXFuXriS0FGDvLG85KL/Dimby5InrPj/28HdJh7vZ3YuhlDJuEFtQaOFj/6h9W/UPfR/rFmvopcNgaUGKUGkqLNEqnrQAbmVYIGxO8SSN0m+NP6Jk7PGgbjFtD20XOh8LYWjH2la4pveWuS8Di+p7HJzhzwo9NLcO1HSvWjiqPuLAv9cJnTRN6Owxq9oHHuILC+pMHyvrgGJhLphc2NHsa4BkjGzO9wfH9r2KX8XXbJmgbuJvfuw9khBzEG/PXqatOT/HaQBvHB9r7jq80SxabSBuW502uI68brwUvra7HOPWv3rDUS56bGtO8HO4EcJtDrt2vc69D2so8va+mPL3CuJhbJo63douMkOL7+twFFotOAN1rGxbr6EoID2d5JvdKRWHadrS71Fe4jGsS+57Up64Xl0JHxvYGjxKtiHTeepcb/TcO2pt0p8Ppg2V8OvbY8t1PXTdx2oLlYftflzSRMvZyjQ7bc8eNIxeuDthpzhDTsJeKLiGzZXkV9unDHHQVDm0E17XCQ+vU2DyztD+P4/a56wSWkEL0tX2wGNsp2YIasyN409QnhFqGEpik2D0nxvDCz+TztAcjk097I+vVcG/gboiWc09ob6Eb6G7KdQJDI9WItlSWgmxp4mpIjCMylr8iU/a7IoQjrOxnOfhv8hpiryXZMNOcteAixGrSG4epyjVk0nBuAWwTtUfDCTyfFny0SMPP+jDC7fbhKmtmOpkUbmhuuyMgB9sjG7L0b2S0uG8V9/Ou4vtRx/EDayOUdMQbIdbYGkm02BqdtMyahHTUG8HW1BtB1tQbow7UG6K0zvve1ggbi/qoo+w1e69dNQAbpTWQGt80xBoc9Ub7ZHRtMtfbmPS5Io60lLsW6kO79bm0R0Eis7V9ioUXWS+NSxWD2UgNGwBl3cNJJq3LQSLZF52vz8r4U4puLBvU26Kq1EqT++hLhliu60EjPusLOr/K5/pAmJl9PUoFNyC6sTfIGhVC4K+jS+/mwds3ro4r+ThNw+v7na+6WAzRPxv72FsbdtL2sgfCMqooFrJuw6yzr9Cv8Eo5fSGCLBqK+8nMtm9mWT1K14bVrnlM2pwkukMcJLugr/1708Z5Gh6sE66dNIeFtPfluUdP4G0RucyrvipTx3C7BDJV13L7nm9y+m0r068Oj9Ovmo0VG8KspRtHJZYqZHMDMi+trJxYlC+t3KO+KhKMs0/4yz0rAW8GUwFvTKOTSksqw6/ebmW5ELsXOxC6y9lxbshy50qhM6ivVof/Dyrz59iWu8lvAMthxF9sKCQXL/itkzL/SrmSEntJI/WLsw2pbnx66q4Me7+SFsIyhsDSQWdXeFRbAFJUWlckPGwoJDtGqW/RDMIP32p2Dopkdg7dhuVvyW4fLwF8Kormu+fBnuuoqlRaaFJUW0Lze6sPKnbqZfMpJq5n5cScepCdBrqC8uJ6YoeCe5SdsEP5bhMq0kLS83VvYyrCDyfppg78ir/xN0pbNtoy3PO3S2IOiLee6z1v/W8PvaNOBq5Vbp01wnr2uuydNW66ebVumFO7q2NvAMs1hsIPtI5Nb4CPV7t7vE/CP9fAj1e6pKu0WlBz2UoFcA3XHW/Uc51uOK/+Dg3XGW7wjpRbI9ee6sxyJ7srb6e7izqAb37YHFeJb7KP4g4Y8qNvcBY9b2ZZdW8KU3VuNKJqeqTzV7pDHM1vZlgtbnxHs28catNvMK+HbjqPAMru0ktuJxkZb9nMK2/V6iVuJxgnuu7S627Xbgeq229BD7lx2FdRvGDLlM66kvq8IbonBSytmxaR+m4yYM5uM6DsspKq+k6Cb6ec98P9CFkG4oz2l5pwHcH9cpOZ+pqTmfqKkx9vaJMb+9ZN7jPMzpDLgM/2Mi9ufzI/7UoCOMoZPItTKysfVzri46lnzzJuFa5W080Ph0YWk4awbjKtqzG6OFj/LTDvlI0dD6JZD27Yo49uyedPbyjukMs5UmDLmKJvbzVPvfr3TWqTXFx/bjgYuysmFtjvJ2E/boImeO94bLjvHwQA7nDG725EeB9udKRfK+2jIO7kJODuHi7EVjNMOMqGm5JTKyvDQ/dv0XDI7t5gKO/ZYV4mtO66k6Ca6O45R0DuDO5D/XisH29OmgTu3fXM72jLX27QGPjvjnls7zZ4/26H9+4z8DZE7454xO8dsCTvsDZo7tAkqO7hcODue3IU76dzAu4071Tvx3YmbfDKC7KQy+fHtO9yhGDKhC/072uQGO8S7pjuuNlM7yqXzO97QjLvBlZvpggTaXnHtezuYC/uM8e0hO9Ut+4zyU3c74B0upLadXTvhfaQyhbW/iegdHhWZ8eC72uR2k9sivZwSAq0L2aONRf+iXcq9J2ToxBqmljRo7SrJRZO1fc7PtSMqyP629gcKw87S/z8B7nTE/usnYCsF7J36YrrFo6L+t6tE/p2rcmjZty2S17U7Ib0Rgn6PKsxow3rkaL/aQdSRzvdkrruEmvsj/WXrfu+daPhNO9e2GLveu5q7mDQEu8KrXKSKHNc717Y0u536fYzGK+4Km+mqjms7kfgCu6E20Hu6tkc7nrqWO822H7u6tgq7z0rPO9Sat7uZbhk76bu5O7R7pruMe9pB5qM2u4fD/oZOu9YJpSy72AB6naD1RtzUhl0wxcqNOcP/yvJzKbvVm//K/02SaOuUguGCft9NgcqVuq27jQRY/oFGxP7cCZZ7o+uWe+8UynuNGrRo1Uqzu/dSPLr1IxHK0/5dyrURzxxbu8NkcqLnVMrKvnbMe6GcF7v1e+87y0YPu6vDkP8Aevh7uUbpOWmbgHvgTTi4m+m5tsh73R7pOQ8a8zvgqqK7tqPYe4FFo3vG1MoZg7Zke9neKTup27q7n3uGu54K7HvGe5wy0pF8e5uTw2sGQcnJ7+PGj18745O4u4uTqrv+byS745P4e42+53vbtPM7/L9Ie/k0DPv9PRvpyBm8u6ueaHuoyZK7saYU+5vK93u/IwT7iCxve4gsdHva+417vpPkO6GT3Hv4+7JrutWjW8SENdKXTmu6u5WxINeVv57muSsFHCCsVdcDu5Xe6qNXPoON6uwQ8vU8CQaex5Er6vproFs7g7oaU66xarEgxi9jsI7762pZ68jqQlOqBcwhWptKYXOuZiCPayErtWrJg5G+2CCXgaE0xS0rIVZDzoirrrjqG/vom+q+2TF7rj6Mx8ypVL2rTL7e6upVvnLYAV3TyliPa2veqK9yPbOeB5vCm1amgPq4oZ3xXB7Ei1wewdtcHsXc1bCFuaElkuawGKSwvEuLlt/GpOqNxtPgvNNDlrzTCMtJU1TPYrDD3PM1h8mUB/TPFq7mS6Sw6cmksJ4CsLDaUdUgmAfVya96ouiTpqvJ6NPRcBIC2DV1ayHt6it0zNNk5JSTPfC5IQel9gOVg2TJB+tayZXWOXWVh3mU1Jo9nUQRzKVk2iSlB9Qrd1GDQxzM4sQZ+OWV5n8hB7ofJaSVZ2Z/SZW3+uNNYUC4JLzRljrRycMH62i3+rsH6ism273kNhW6Ke+jSOskMbmrL+TqK3fkgCqGKYYohhnydVkNfgfMVS2anwetmrpphH8XK81A3q6M5KVrrd6l11hxTAqceiECltXBLvhdJMMpFFBddS54h4N1ZB0MafJ1bbgJlwKHpfYPdKkmty4OYbcH6jONNBHwKivwu5pq6FiPGEoG9IegpLvLYXyk4btjc6TlqQonIYkfcVd0jxgwFKBdZB002s5k19yhYe24QYLhqAbMjPij84mH/0lY+CBdMt1hh6GJN86+h8AxnGlj5LAUnWTwPPaH7Ye7y3A83uTFbPsuMFGsPPvD2pWVtNg1bZXIyb8BFsy1lZbMmuNTB9LqSZXhzPMHnqHelc+NnBS1OhUHzMq1B9mqboyoy1ArTQeRoY+H6/WcFKbvSZXpcXMHhZyNaeP1nBTBoY6VlnpByfXqGsycBuRH3ZW50rOH8LvvFfKhrsCYPPL41BSj+I83UM0Sof0U9Xz+ysxmqS5rkb/knc1eW+pHu42j+PfansyGR8FNJX0Jh9tq+YfmR483Hc0FvL6H09Puh7F1RYeSR5WH7WiAypOFksDSy+xm2xEsLThpC5s7m54HmMygueYG2KjVfMzo8YeUMrVi/fxjzOtboz0waxzrYXzdR4YqqlW10e1HpdGizQbLjJ2FR/iuH/jB0d9p60eKlNnRjuGzR/9phij8yoea9MrSXQPR00ehvK/hkZqFEbS84i2MR/CopN7H+0dNEzHzVZFH5mjeR/38LkfQyvTM7kfPTImbjUfmR4Yq9OG10ZgUkZqQCol865Humu1NXof+lbBrIwfSR90HgilWUWuRlcl5+KtRHfiKx+pHl1v04ZoUqofz3OSt0fz66xUXUpHnQdyL/bT6NNBd+jT1tMzUmKSOMamk70vPbsH4kwmnSfAl60nzix0RpOR+wIYj2YtK6NAbPlWIGxzop9TyAuxImgK01MUCzNSuZoTGgQLk/IgR4B5cXGlVn52Wcwms5Ft7K5SU0LGy6I9uFcfqLQuVvY0c6Jtua6jrld0JaWaNlK0CqvGPyffHu0mrJGtJ7Y1rSZaF4c0PblTJ9iGuZofH7JS0XzGltF8BArBNaaWwTS5msE0HpeataNOWrk/y2u8Y/0OHk2HdYfA8t010J9j/DYfkvL2H8yPBZJWHz0zU1cTH+F04x62Hg0fj5LXRumnVR7dA14aYaR6H3u8SJ5w8udH4SOU5kIHp0ayHls2YZOF8y/j6h/09ASfzYdJHtCfUJ/rHvTP5dMb+3P3zQPd92qishtqo4J1aqMD+ySnxG9qo+HqkWtSGzKvASccA2AGNaN0ns+1ASc6r18WZFNgBx+SogdwNJIassdhhtS1pKfJTKqjiu7kniBuZJ6cn4EZyUyN0ri289m09sL4DooC1zKY+HuEVZT7hFSGWjPszsNGW2h674KPBvpKcbz8DFeCw+0UIqoCOcPzqxKeyB+SnozWJkrCw5IP4p4bQ/eiY6raB/Ae2gY4+h9as6ofW3TWH1pkTqGEMp6w4oLXmAeSrgHipNb75rvnR1MVcwvExmfkq2EEVXN0XVqebQTt8vImK/MH5giid8ZBlzh4DXITG/qfRp4sEg9TAjcL7QRGt2l0XMoC2p60h7InC8Xmn2GTHhL+6Sk90hY8XAM2PFyDNs9zXs7hfcavvjWanpc1mp81tDqfyzQ6nkD1Lp7nkFVzdEd68oafATRGnra0np7rdXqfnp7en4Y1CiYPDwom8HUKJ1P6Jp5gNTafBw8ankj0pTdDN8HrMTcDNSGfXTc9N6u5PTdlfT02AqqMNu3vWWbY8wfmATSJNn03Bp8hIqkPaX24HdGe+B3RnhcPlTZ+6l03SZ8o87gczTfFN2wnJTbbipDZwZ4oc27yuzvni98kKHNhn2nXWWcIcxGfJtmRnnme5TcZ1/meYNHRn5QbBZ4LuXmenNAJnv+zrBL/aXQ2h7lVN2WHVTY/sqmeldZpnj5ulW7TgBmfq27YNgiOmZ+snFafP6X1n53ruZ4N18WfTdaMNm87hZ60c0WfS8nNnq3JTZ4ZbawTyyqJn1yHrBK3agTylysCJ0PWtPN4c5WeDdeItufpNZ8VHyjyEvN1nk7zXZ7DnzmeI5/lfXofiXyCW29rrZ8UM2l9UYctnkDlbZ9Tn6wSeKslnqDlpZ6wtkmeQOXln3OeKZ+589Tzj2t9nv1uCXPZUQ13nR9zZ9AfH5dZnq428552SeGeG5+jnh9c3TY6H9ufhfMT8/KGI/J7njSy+5/tnzOXjyUQ852eyLsbnyE33Z/FHrlmCFLLn+E3VZ52SYi39p8s8urpb9ZPpwGtmp4/KjqfvYYmnisyJp7BHiaeGLpen8/XjXJZ6LVyY4fS8h6fKKqGYTQ1F7z3n+fWfp9A6wonU0aWn2fWu+awqzaemnI/n2/WwHZ7N4o71ZciFjVEC3Is/XOn2eYNLIBmsjdbZrnm7VzR50a6+hY36iHzjmsmEyyn72K75+Beu+ctXMMuO+epk1oWBroX5u1dsiacNq0qehZVRZQ2SjeJfSB2dOoJcsLvLPNph6pLkfPvvVs3aF5AX7HywF5dZ3Be8fINLQTHZPykuuEWJNwx8y1d+CdBp0/rYfLQXxhmMF63NjBf0GYZkixmlqRl4p9bafwB8tS6cGbUui1mGF5373Axy/bYbCdmNUV2Fhhe8jYNDXYXWF97Zg0tfLIgXlI3YF8dc0RfR2YEXiHzNX0Na1NyrF6Tc8Rf43MkXl932F9AZlrq3F7tXOomyF70xshfdF/lakH3K7ZYis+D1ZfHCvReTwoMXrcKjF7Ei9xeRws4XpSKtB8SX7fqpIpsX/7GIJOoM3/rMl+cX2z9JWtyAt4GT2WEM2ReoRIKX5hfLhKUXh8KVF8iXnjrTHcrni9XgF6s6v+fJ9aZKhReCc5iXp4STF7yzl+88PwsXgnPHF87yNJf25YyXkzO+F4szpJf25dcXpzPpF6/fQheSl6IOspe1UtlDGZeql4JztRfTHaZd+XTFRcGN08vx3OLMxtzN54XdHAab9fXqVZzAa1WciEe79cQV7fSCtnOXm5f+VPvnjZyHl8+Ux+eZ9ZeXx9U3l9phArZvlJc2b5fv55m94JeV6xm6gam2RKw8i90Vyv2Xqefnl7Hn490CFNOXz9pbl/suJ90/UaRXj9y79YGM290256fdadcn3SKZT82m54v176HPl8RNplSph9+X2E2nzaqcnQ12vNZU/rywV8Ln15f858OX+lfCOtxzY90hvIRX86IUV/TnrZytfLRX1WXGKVPQ290WzZxXqOeGV4/NglegPdvZOTnE31N8slecLZB9zRfJGxlXr2eh3OD1i/WVKrFXlk4mV5Kax5fuHPuXvVeeV46BQ1fugWNX5qCOV7NX/VezZ+wt5qCRV4N1vFfmoO/N03X4JNQjuVfmoNdX1WqQfder36sZuvCn1VeVZ9vdBWer9fCj7VfSW2tX2nC2V6ln01f9eop10KO79ej3WpyBZ4xXvmehV+TX491tKuacvclVYfQ6jmeh3MOj91fJ9Z9Xrs2ZvcEsUnXnMfHcpi1dl79dCFf+5Ebc141jl++NOFe9bVNXnD1m16xrf1iyqrv12VmJ3TkUrFf3p7TXnB1D9M+nslTK/tzXtkah3LlNV1faYoJcjZf+6xm6j+aaV4J17NfkZyDXlQla162qmFfk7UtXpilzV5kwLleSjTv1xEgd15szt/Sb9WtX3unb3Wite1eeyIDXz7X/zYbOV1eWdtZUzuzTHdg4SlfxSN6c/bW6V4u1ldeOJbXX79eU1+FiRtf9CaPXl9121/0JvdepgQPX/leVdX+Uth1dROf0kgCf1/Bdm9fmLbvX1+4H14LXsEjMu8qyt9fYQQ/XvDeL9Yb41912p5DXw6DrV56niNePHHNXgNSE14HUu/WkSdNXhjfKN5v7XtetIdtXm/t7V44R4dfWkdZUmk9XV7hUsEjD1OscxVfsW2VXv+d8N/E3wjf1bWI3v+c/153YH+zj3Pk3oDfgUcY3tte+U9A3vlP79LA31xRlN6yWDdf/HnY3nyWf16hTlDftYmdX+Yp+N8w32hHwtBly8o3u9h+qht8eOnMcgbq58UNfTbHz7P5F1zfWOuMAg0TYrYVAu15F2m1E5HGD7IC3yHnWOtf81jrGVJQ96hogt6gGEAL3N85Fm0E8iobfeiE0gOxcIPl5RLYo/2eq2Ds39S5owbCA9oQoophcyLnXnPiiwCYSk9EAxCFlsZDOeLHaoxHg8d81pr3fXlGvDN5Rhd9eUZS59xs0gOgZmzO5i9W/U7L8k7E61VHogMzvA8sZvY5mWjOwSKjw3TqUk+/V9xseAMFBrlSXU8iTx98BUa06whq+awS5RR0T68VR7Q1EISjz9xt1c4qT0DXKGX9rAbfWc4bozTPC+7nSu1ZUs4xU/T3EGdfChPXzItjB4SK8MzFytDM0jSUHkDN/sbKT/7HfnOEM8/hhjfrkk7fZIpB32cLfnIo53PU+fwXC9oQpItKJnnL8gIxEyhsYIeqXqMnXt4T18iv2ZmoX/utk4bGmC9nHHPRcpNUXt7py2MGOv2c8xI7iRMQhGdngGdpSi3JKbWGNlpugd4cipnemiY0hjJYAGEh3hn7gs/qJodqsR6gWbD9IXJ8zgikUd9hEi5z8d4x3/V3CE6R09WSHt+vZ7pPLALG+q+4JPze3sne3t76/Bbfqd4W3wz9TKS5Ui2GGd+a5fXedDUN3iHeX2Zq36necgLSNXyEoFjJ3gC9H2fX1EXeJP1t30/SZd+pkSQzk3YB4idWXDk9cgnfXv2HjqBZvd9J33L9Ywb6E2Q0+fycs79MHv3p348268uW3vETWd913iB19d653wz9Bd6g/NE7Yd6a/QXfwPx3V2+5o1cR3lPexd9y/CXfap4tczp28d8+/J7fPv2J3ytnA95r3jPefvyp3xtnft5+/f7fG2Zq33yyEuTkJ5Eywd9O/E3fNvzN3tb9Sib6Ei3eO2dt3l4X7d56qo4xC98rZ4vfEy7Tlj3f19Vz6Nb96ITrZxfeTDYIFLgL+95rGVfeewfmA7ve4FFH39InR9/IHtvfY5x2/J1PfGdmqUgfz98Pcsr8JAs1ZrRuEA5qE9gKMMbCNN7G9oTf30eSp99Yal7Oky9L3giko8e0X8qwjhYYCodnmppSNiEqjhYhKsr8wasv32A/MjZP3mNyISsjc3qbrXN8r6AOXF/4Crxfv5Ah8rX7gvPsN8qxHDfYCpd2fANwPzwDTF/ohfHul58kshHml99CF8eg+hdAPxonwD+YP7ffWD7gUFHmj98aJrg+i+cQP+H9kD9QXyM90F6EPk+nb97wXw7nxD833xvm1/ZX558nZD7O5nPml97b7iNtlFM/GZXr1LmvEDMtUgf4TrIGIp43MirD6425s6KeSIWqnmBpelpG+irDGlmdM7fcrIQyn1HtCp/4F7AexJsjq2muksP1rm7CYyAjkz69AQf56rLPu+p4I6XKyw4396iuo6qEl2X60B+EWbdPn/Qf7hxaraoWwzk8bW7KU1/vGsJ+uYbCXTj6whBMxppPjRZa29JGWruNwav/1/dGKW8774o+D09/3+ffuwsSW3+9fAvujFq1rWola+rpZQtyW0S7YrS76rHS3+rStCmT5rXaXwqiyKwBt6o/mgsSH4oKzdhLtFXoAxONF33SNx192U21iTMcC2EySrVw66a2ow3rHk63Kj4Si+JyXpP8B2G0faeRtCIHwbRsmMBzfpIsmeSG7aZt02S8sbQ5ZXS0Aubfs8+nDNw5avch5xJiWxZ3SedfqK62Igdetg4+xUbtpq517dUYuVXTZLyRar6p/qcs4E5qLrdT9FG3wT/BCvQKxrcYpabO/LSxVm21Fs/stZbP7LSFrT21nleFtC37jLRlCgy1FQpmh7lW9rWXM9qnYqfstDKL5bVAs+W0FzKltFFXYrQ3Mga0iwoGtXKLGT8/M0EOCnxhPs482dZvVPw5ET42TpW0/Js9tS770T62TzE/n8Xap4KbcT/j7sy0C6zyC6Y9xoY8jIayPLVwpck+PgkpPrku0ZbVPkK1tQfpPj4JmT9IGXU+ekWuTq6PAx9vZS1T3BnYCoQfzsehHjv2izI6m2QflKyLM9gKYFMCt4tHCD5dPp/f+zLv8nsyRVPzMp1PpkdNdIU7AR+u54EfgS9BHiAKcFIstq0/eBF6VqSi84bMt0cn1AqX4jqaVU5msMEvZVcMrdF319UdL88fFhGFm9z3xArPb8QK//UB01K8qGP85ZRWWAu2mRQKaVglVjusYuoWl7mZy4Z0zwfjcQYgR5utslJ1PbJTmfsUCuusKlJcpdo7fa1ZqZQ/Za1/JzQ+KXUezzMDxVdPopXOxZrnMic/lzMjokk+rtIyi87SxV1ECzULhzV1Chc+sT7nP7c/SyezC8QKsVfEC4lX7x5ZPsui7lfICuSKLz/uz8o+8xYnd4sfTmYR5nmmZOgC2cjGoF8tBBBfBoZgXyTovz6RH8XmWlc2noCtlDZJb8M3yifT6rdpfB7G88+nvrfh/VrgReZ2hvzLfDjlp6Q+wKvkPzbJKiYgq8BeS7wW0ph8gAA=='));
///////////////////////////////////////////////

///////////////////////////////////////////////
/* Utility functions */

var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' +
  pcbdata.metadata.revision + '__#';
var storage;

function initStorage(key) {
  try {
    window.localStorage.getItem("blank");
    storage = window.localStorage;
  } catch (e) {
    // localStorage not available
  }
  if (!storage) {
    try {
      window.sessionStorage.getItem("blank");
      storage = window.sessionStorage;
    } catch (e) {
      // sessionStorage also not available
    }
  }
}

function readStorage(key) {
  if (storage) {
    return storage.getItem(storagePrefix + key);
  } else {
    return null;
  }
}

function writeStorage(key, value) {
  if (storage) {
    storage.setItem(storagePrefix + key, value);
  }
}

function fancyDblClickHandler(el, onsingle, ondouble) {
  return function() {
    if (el.getAttribute("data-dblclick") == null) {
      el.setAttribute("data-dblclick", 1);
      setTimeout(function() {
        if (el.getAttribute("data-dblclick") == 1) {
          onsingle();
        }
        el.removeAttribute("data-dblclick");
      }, 200);
    } else {
      el.removeAttribute("data-dblclick");
      ondouble();
    }
  }
}

function smoothScrollToRow(rowid) {
  document.getElementById(rowid).scrollIntoView({
    behavior: "smooth",
    block: "center",
    inline: "nearest"
  });
}

function focusInputField(input) {
  input.scrollIntoView(false);
  input.focus();
  input.select();
}

function copyToClipboard() {
  var text = '';
  for (var node of bomhead.childNodes[0].childNodes) {
    if (node.firstChild) {
      text = text + node.firstChild.nodeValue;
    }
    if (node != bomhead.childNodes[0].lastChild) {
      text += '\t';
    }
  }
  text += '\n';
  for (var row of bombody.childNodes) {
    for (var cell of row.childNodes) {
      for (var node of cell.childNodes) {
        if (node.nodeName == "INPUT") {
          if (node.checked) {
            text = text + '✓';
          }
        } else if (node.nodeName == "MARK") {
          text = text + node.firstChild.nodeValue;
        } else {
          text = text + node.nodeValue;
        }
      }
      if (cell != row.lastChild) {
        text += '\t';
      }
    }
    text += '\n';
  }
  var textArea = document.createElement("textarea");
  textArea.classList.add('clipboard-temp');
  textArea.value = text;

  document.body.appendChild(textArea);
  textArea.focus();
  textArea.select();

  try {
    if (document.execCommand('copy')) {
      console.log('Bom copied to clipboard.');
    }
  } catch (err) {
    console.log('Can not copy to clipboard.');
  }

  document.body.removeChild(textArea);
}

function removeGutterNode(node) {
  for (var i = 0; i < node.childNodes.length; i++) {
    if (node.childNodes[i].classList &&
      node.childNodes[i].classList.contains("gutter")) {
      node.removeChild(node.childNodes[i]);
      break;
    }
  }
}

function cleanGutters() {
  removeGutterNode(document.getElementById("bot"));
  removeGutterNode(document.getElementById("canvasdiv"));
}

var units = {
  prefixes: {
    giga: ["G", "g", "giga", "Giga", "GIGA", "Г"],
    mega: ["M", "mega", "Mega", "MEGA", "М"],
    kilo: ["K", "k", "kilo", "Kilo", "KILO", "к"],
    milli: ["m", "milli", "Milli", "MILLI", "мл"],
    micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ", "мк"], // different utf8 μ
    nano: ["N", "n", "nano", "Nano", "NANO", "н"],
    pico: ["P", "p", "pico", "Pico", "PICO", "п"],
  },
  unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"],
  unitsLong: [
    "OHM", "Ohm", "ohm", "ohms",
    "FARAD", "Farad", "farad",
    "HENRY", "Henry", "henry"
  ],
  getMultiplier: function(s) {
    if (this.prefixes.giga.includes(s)) return 1e9;
    if (this.prefixes.mega.includes(s)) return 1e6;
    if (this.prefixes.kilo.includes(s)) return 1e3;
    if (this.prefixes.milli.includes(s)) return 1e-3;
    if (this.prefixes.micro.includes(s)) return 1e-6;
    if (this.prefixes.nano.includes(s)) return 1e-9;
    if (this.prefixes.pico.includes(s)) return 1e-12;
    return 1;
  },
  valueRegex: null,
}

function initUtils() {
  var allPrefixes = units.prefixes.giga
    .concat(units.prefixes.mega)
    .concat(units.prefixes.kilo)
    .concat(units.prefixes.milli)
    .concat(units.prefixes.micro)
    .concat(units.prefixes.nano)
    .concat(units.prefixes.pico);
  var allUnits = units.unitsShort.concat(units.unitsLong);
  units.valueRegex = new RegExp("^([0-9\.]+)" +
    "\\s*(" + allPrefixes.join("|") + ")?" +
    "(" + allUnits.join("|") + ")?" +
    "(\\b.*)?$", "");
  units.valueAltRegex = new RegExp("^([0-9]*)" +
    "(" + units.unitsShort.join("|") + ")?" +
    "([GgMmKkUuNnPp])?" +
    "([0-9]*)" +
    "(\\b.*)?$", "");
  for (var bom_type of ["both", "F", "B"]) {
    for (var row of pcbdata.bom[bom_type]) {
      row.push(parseValue(row[1], row[3][0][0]));
    }
  }
}

function parseValue(val, ref) {
  var inferUnit = (unit, ref) => {
    if (unit) {
      unit = unit.toLowerCase();
      if (unit == 'Ω' || unit == "ohm" || unit == "ohms") {
        unit = 'r';
      }
      unit = unit[0];
    } else {
      ref = /^([a-z]+)\d+$/i.exec(ref);
      if (ref) {
        ref = ref[1].toLowerCase();
        if (ref == "c") unit = 'f';
        else if (ref == "l") unit = 'h';
        else if (ref == "r" || ref == "rv") unit = 'r';
        else unit = null;
      }
    }
    return unit;
  };
  val = val.replace(/,/g, "");
  var match = units.valueRegex.exec(val);
  var unit;
  if (match) {
    val = parseFloat(match[1]);
    if (match[2]) {
      val = val * units.getMultiplier(match[2]);
    }
    unit = inferUnit(match[3], ref);
    if (!unit) return null;
    else return {
      val: val,
      unit: unit,
      extra: match[4],
    }
  }
  match = units.valueAltRegex.exec(val);
  if (match && (match[1] || match[4])) {
    val = parseFloat(match[1] + "." + match[4]);
    if (match[3]) {
      val = val * units.getMultiplier(match[3]);
    }
    unit = inferUnit(match[2], ref);
    if (!unit) return null;
    else return {
      val: val,
      unit: unit,
      extra: match[5],
    }
  }
  return null;
}

function valueCompare(a, b, stra, strb) {
  if (a === null && b === null) {
    // Failed to parse both values, compare them as strings.
    if (stra != strb) return stra > strb ? 1 : -1;
    else return 0;
  } else if (a === null) {
    return 1;
  } else if (b === null) {
    return -1;
  } else {
    if (a.unit != b.unit) return a.unit > b.unit ? 1 : -1;
    else if (a.val != b.val) return a.val > b.val ? 1 : -1;
    else if (a.extra != b.extra) return a.extra > b.extra ? 1 : -1;
    else return 0;
  }
}

function refCompare(a, b) {
    var regex = new RegExp('^([A-Za-z]*)(\\d+)');
    var desa = a[0];
    var desb = b[0];

    if (desa.match(regex) && desb.match(regex))
    {
      var bsplitted = regex.exec(desb);
      var asplitted = regex.exec(desa);
      var c = asplitted[1].localeCompare(bsplitted[1]);
      if (c!==0) return c;
      var aint = parseInt(asplitted[2]);
      var bint = parseInt(bsplitted[2]);
      if (aint !== bint) return aint > bint ? 1 : -1;
      else return 0;
    }
   else
   {
     return desa.localeCompare(desb);
   }
}

function validateSaveImgDimension(element) {
  var valid = false;
  var intValue = 0;
  if (/^[1-9]\d*$/.test(element.value)) {
    intValue = parseInt(element.value);
    if (intValue <= 16000) {
      valid = true;
    }
  }
  if (valid) {
    element.classList.remove("invalid");
  } else {
    element.classList.add("invalid");
  }
  return intValue;
}

function saveImage(layer) {
  var width = validateSaveImgDimension(document.getElementById("render-save-width"));
  var height = validateSaveImgDimension(document.getElementById("render-save-height"));
  var bgcolor = null;
  if (!document.getElementById("render-save-transparent").checked) {
    var style = getComputedStyle(topmostdiv);
    bgcolor = style.getPropertyValue("background-color");
  }
  if (!width || !height) return;

  // Prepare image
  var canvas = document.createElement("canvas");
  var layerdict = {
    transform: {
      x: 0,
      y: 0,
      s: 1,
      panx: 0,
      pany: 0,
      zoom: 1,
    },
    bg: canvas,
    fab: canvas,
    silk: canvas,
    highlight: canvas,
    layer: layer,
  }
  // Do the rendering
  recalcLayerScale(layerdict, width, height);
  prepareLayer(layerdict);
  clearCanvas(canvas, bgcolor);
  drawBackground(layerdict, false);
  drawHighlightsOnLayer(layerdict, false);

  // Save image
  var imgdata = canvas.toDataURL("image/png");

  var filename = pcbdata.metadata.title;
  if (pcbdata.metadata.revision) {
    filename += `.${pcbdata.metadata.revision}`;
  }
  filename += `.${layer}.png`;
  saveFile(filename, dataURLtoBlob(imgdata));
}

function saveSettings() {
  var data = {
    type: "InteractiveHtmlBom settings",
    version: 1,
    pcbmetadata: pcbdata.metadata,
    settings: settings,
  }
  var blob = new Blob([JSON.stringify(data, null, 4)], {
    type: "application/json"
  });
  saveFile(`${pcbdata.metadata.title}.settings.json`, blob);
}

function loadSettings() {
  var input = document.createElement("input");
  input.type = "file";
  input.accept = ".settings.json";
  input.onchange = function(e) {
    var file = e.target.files[0];
    var reader = new FileReader();
    reader.onload = readerEvent => {
      var content = readerEvent.target.result;
      var newSettings;
      try {
        newSettings = JSON.parse(content);
      } catch (e) {
        alert("Selected file is not InteractiveHtmlBom settings file.");
        return;
      }
      if (newSettings.type != "InteractiveHtmlBom settings") {
        alert("Selected file is not InteractiveHtmlBom settings file.");
        return;
      }
      var metadataMatches = newSettings.hasOwnProperty("pcbmetadata");
      if (metadataMatches) {
        for (var k in pcbdata.metadata) {
          if (!newSettings.pcbmetadata.hasOwnProperty(k) || newSettings.pcbmetadata[k] != pcbdata.metadata[k]) {
            metadataMatches = false;
          }
        }
      }
      if (!metadataMatches) {
        var currentMetadata = JSON.stringify(pcbdata.metadata, null, 4);
        var fileMetadata = JSON.stringify(newSettings.pcbmetadata, null, 4);
        if (!confirm(
            `Settins file metadata does not match current metadata.\n\n` +
            `Page metadata:\n${currentMetadata}\n\n` +
            `Settings file metadata:\n${fileMetadata}\n\n` +
            `Press OK if you would like to import settings anyway.`)) {
          return;
        }
      }
      overwriteSettings(newSettings.settings);
    }
    reader.readAsText(file, 'UTF-8');
  }
  input.click();
}

function overwriteSettings(newSettings) {
  initDone = false;
  Object.assign(settings, newSettings);
  writeStorage("bomlayout", settings.bomlayout);
  writeStorage("bommode", settings.bommode);
  writeStorage("canvaslayout", settings.canvaslayout);
  writeStorage("bomCheckboxes", settings.checkboxes.join(","));
  document.getElementById("bomCheckboxes").value = settings.checkboxes.join(",");
  for (var checkbox of settings.checkboxes) {
    writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
  }
  writeStorage("markWhenChecked", settings.markWhenChecked);
  padsVisible(settings.renderPads);
  document.getElementById("padsCheckbox").checked = settings.renderPads;
  fabricationVisible(settings.renderFabrication);
  document.getElementById("fabricationCheckbox").checked = settings.renderFabrication;
  silkscreenVisible(settings.renderSilkscreen);
  document.getElementById("silkscreenCheckbox").checked = settings.renderSilkscreen;
  referencesVisible(settings.renderReferences);
  document.getElementById("referencesCheckbox").checked = settings.renderReferences;
  valuesVisible(settings.renderValues);
  document.getElementById("valuesCheckbox").checked = settings.renderValues;
  tracksVisible(settings.renderTracks);
  document.getElementById("tracksCheckbox").checked = settings.renderTracks;
  zonesVisible(settings.renderZones);
  document.getElementById("zonesCheckbox").checked = settings.renderZones;
  dnpOutline(settings.renderDnpOutline);
  document.getElementById("dnpOutlineCheckbox").checked = settings.renderDnpOutline;
  setRedrawOnDrag(settings.redrawOnDrag);
  document.getElementById("dragCheckbox").checked = settings.redrawOnDrag;
  setDarkMode(settings.darkMode);
  document.getElementById("darkmodeCheckbox").checked = settings.darkMode;
  setHighlightPin1(settings.highlightpin1);
  document.getElementById("highlightpin1Checkbox").checked = settings.highlightpin1;
  showFootprints(settings.show_footprints);
  writeStorage("boardRotation", settings.boardRotation);
  document.getElementById("boardRotation").value = settings.boardRotation / 5;
  document.getElementById("rotationDegree").textContent = settings.boardRotation;
  initDone = true;
  prepCheckboxes();
  changeBomLayout(settings.bomlayout);
}

function saveFile(filename, blob) {
  var link = document.createElement("a");
  var objurl = URL.createObjectURL(blob);
  link.download = filename;
  link.href = objurl;
  link.click();
}

function dataURLtoBlob(dataurl) {
  var arr = dataurl.split(','),
    mime = arr[0].match(/:(.*?);/)[1],
    bstr = atob(arr[1]),
    n = bstr.length,
    u8arr = new Uint8Array(n);
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }
  return new Blob([u8arr], {
    type: mime
  });
}

var settings = {
  canvaslayout: "default",
  bomlayout: "default",
  bommode: "grouped",
  checkboxes: [],
  checkboxStoredRefs: {},
  darkMode: false,
  highlightpin1: false,
  redrawOnDrag: true,
  boardRotation: 0,
  renderPads: true,
  renderReferences: true,
  renderValues: true,
  renderSilkscreen: true,
  renderFabrication: true,
  renderDnpOutline: false,
  renderTracks: true,
  renderZones: true,
}

function initDefaults() {
  settings.bomlayout = readStorage("bomlayout");
  if (settings.bomlayout === null) {
    settings.bomlayout = config.bom_view;
  }
  if (!['bom-only', 'left-right', 'top-bottom'].includes(settings.bomlayout)) {
    settings.bomlayout = config.bom_view;
  }
  settings.bommode = readStorage("bommode");
  if (settings.bommode === null) {
    settings.bommode = "grouped";
  }
  if (!["grouped", "ungrouped", "netlist"].includes(settings.bommode)) {
    settings.bommode = "grouped";
  }
  settings.canvaslayout = readStorage("canvaslayout");
  if (settings.canvaslayout === null) {
    settings.canvaslayout = config.layer_view;
  }
  var bomCheckboxes = readStorage("bomCheckboxes");
  if (bomCheckboxes === null) {
    bomCheckboxes = config.checkboxes;
  }
  settings.checkboxes = bomCheckboxes.split(",").filter((e) => e);
  document.getElementById("bomCheckboxes").value = bomCheckboxes;

  settings.markWhenChecked = readStorage("markWhenChecked") || "";
  populateMarkWhenCheckedOptions();

  function initBooleanSetting(storageString, def, elementId, func) {
    var b = readStorage(storageString);
    if (b === null) {
      b = def;
    } else {
      b = (b == "true");
    }
    document.getElementById(elementId).checked = b;
    func(b);
  }

  initBooleanSetting("padsVisible", config.show_pads, "padsCheckbox", padsVisible);
  initBooleanSetting("fabricationVisible", config.show_fabrication, "fabricationCheckbox", fabricationVisible);
  initBooleanSetting("silkscreenVisible", config.show_silkscreen, "silkscreenCheckbox", silkscreenVisible);
  initBooleanSetting("referencesVisible", true, "referencesCheckbox", referencesVisible);
  initBooleanSetting("valuesVisible", true, "valuesCheckbox", valuesVisible);
  if ("tracks" in pcbdata) {
    initBooleanSetting("tracksVisible", true, "tracksCheckbox", tracksVisible);
    initBooleanSetting("zonesVisible", true, "zonesCheckbox", zonesVisible);
  } else {
    document.getElementById("tracksAndZonesCheckboxes").style.display = "none";
    tracksVisible(false);
    zonesVisible(false);
  }
  initBooleanSetting("dnpOutline", false, "dnpOutlineCheckbox", dnpOutline);
  initBooleanSetting("redrawOnDrag", config.redraw_on_drag, "dragCheckbox", setRedrawOnDrag);
  initBooleanSetting("darkmode", config.dark_mode, "darkmodeCheckbox", setDarkMode);
  initBooleanSetting("highlightpin1", config.highlight_pin1, "highlightpin1Checkbox", setHighlightPin1);

  var fields = ["checkboxes"].concat(config.fields);
  var hcols = JSON.parse(readStorage("hiddenColumns"));
  if (hcols === null) {
    hcols = [];
  }
  settings.hiddenColumns = config.hiddenColumns;
  //settings.hiddenColumns = hcols.filter(e => fields.includes(e));

  var cord = JSON.parse(readStorage("columnOrder"));
  if (cord === null) {
    cord = fields;
  } else {
    cord = cord.filter(e => fields.includes(e));
    if (cord.length != fields.length)
      cord = fields;
  }
  settings.columnOrder = cord;

  settings.boardRotation = readStorage("boardRotation");
  if (settings.boardRotation === null) {
    settings.boardRotation = config.board_rotation * 5;
  } else {
    settings.boardRotation = parseInt(settings.boardRotation);
  }
  document.getElementById("boardRotation").value = settings.boardRotation / 5;
  document.getElementById("rotationDegree").textContent = settings.boardRotation;
}

// Helper classes for user js callbacks.

const IBOM_EVENT_TYPES = {
  ALL: "all",
  HIGHLIGHT_EVENT: "highlightEvent",
  CHECKBOX_CHANGE_EVENT: "checkboxChangeEvent",
  BOM_BODY_CHANGE_EVENT: "bomBodyChangeEvent",
}

const EventHandler = {
  callbacks: {},
  init: function() {
    for (eventType of Object.values(IBOM_EVENT_TYPES))
      this.callbacks[eventType] = [];
  },
  registerCallback: function(eventType, callback) {
    this.callbacks[eventType].push(callback);
  },
  emitEvent: function(eventType, eventArgs) {
    event = {
      eventType: eventType,
      args: eventArgs,
    }
    var callback;
    for (callback of this.callbacks[eventType])
      callback(event);
    for (callback of this.callbacks[IBOM_EVENT_TYPES.ALL])
      callback(event);
  }
}
EventHandler.init();

///////////////////////////////////////////////

///////////////////////////////////////////////
/* PCB rendering code */

var emptyContext2d = document.createElement("canvas").getContext("2d");

function deg2rad(deg) {
  return deg * Math.PI / 180;
}

function calcFontPoint(linepoint, text, offsetx, offsety, tilt) {
  var point = [
    linepoint[0] * text.width + offsetx,
    linepoint[1] * text.height + offsety
  ];
  // This approximates pcbnew behavior with how text tilts depending on horizontal justification
  point[0] -= (linepoint[1] + 0.5 * (1 + text.justify[0])) * text.height * tilt;
  return point;
}

function drawText(ctx, text, color) {
  if ("ref" in text && !settings.renderReferences) return;
  if ("val" in text && !settings.renderValues) return;
  ctx.save();
  ctx.fillStyle = color;
  ctx.strokeStyle = color;
  ctx.lineCap = "round";
  ctx.lineJoin = "round";
  ctx.lineWidth = text.thickness;
  if ("svgpath" in text) {
    ctx.stroke(new Path2D(text.svgpath));
    ctx.restore();
    return;
  }
  ctx.translate(...text.pos);
  ctx.translate(text.thickness * 0.5, 0);
  var angle = -text.angle;
  if (text.attr.includes("mirrored")) {
    ctx.scale(-1, 1);
    angle = -angle;
  }
  var tilt = 0;
  if (text.attr.includes("italic")) {
    tilt = 0.125;
  }
  var interline = text.height * 1.5 + text.thickness;
  var txt = text.text.split("\n");
  // KiCad ignores last empty line.
  if (txt[txt.length - 1] == '') txt.pop();
  ctx.rotate(deg2rad(angle));
  var offsety = (1 - text.justify[1]) / 2 * text.height; // One line offset
  offsety -= (txt.length - 1) * (text.justify[1] + 1) / 2 * interline; // Multiline offset
  for (var i in txt) {
    var lineWidth = text.thickness + interline / 2 * tilt;
    for (var j = 0; j < txt[i].length; j++) {
      if (txt[i][j] == '\t') {
        var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
        lineWidth += fourSpaces - lineWidth % fourSpaces;
      } else {
        if (txt[i][j] == '~') {
          j++;
          if (j == txt[i].length)
            break;
        }
        lineWidth += pcbdata.font_data[txt[i][j]].w * text.width;
      }
    }
    var offsetx = -lineWidth * (text.justify[0] + 1) / 2;
    var inOverbar = false;
    for (var j = 0; j < txt[i].length; j++) {
      if (txt[i][j] == '\t') {
        var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
        offsetx += fourSpaces - offsetx % fourSpaces;
        continue;
      } else if (txt[i][j] == '~') {
        j++;
        if (j == txt[i].length)
          break;
        if (txt[i][j] != '~') {
          inOverbar = !inOverbar;
        }
      }
      var glyph = pcbdata.font_data[txt[i][j]];
      if (inOverbar) {
        var overbarStart = [offsetx, -text.height * 1.4 + offsety];
        var overbarEnd = [offsetx + text.width * glyph.w, overbarStart[1]];

        if (!lastHadOverbar) {
          overbarStart[0] += text.height * 1.4 * tilt;
          lastHadOverbar = true;
        }
        ctx.beginPath();
        ctx.moveTo(...overbarStart);
        ctx.lineTo(...overbarEnd);
        ctx.stroke();
      } else {
        lastHadOverbar = false;
      }
      for (var line of glyph.l) {
        ctx.beginPath();
        ctx.moveTo(...calcFontPoint(line[0], text, offsetx, offsety, tilt));
        for (var k = 1; k < line.length; k++) {
          ctx.lineTo(...calcFontPoint(line[k], text, offsetx, offsety, tilt));
        }
        ctx.stroke();
      }
      offsetx += glyph.w * text.width;
    }
    offsety += interline;
  }
  ctx.restore();
}

function drawedge(ctx, scalefactor, edge, color) {
  if ("ref" in edge && !settings.renderReferences) return;
  if ("val" in edge && !settings.renderValues) return;
  ctx.strokeStyle = color;
  ctx.fillStyle = color;
  ctx.lineWidth = Math.max(1 / scalefactor, edge.width);
  ctx.lineCap = "round";
  ctx.lineJoin = "round";
  if ("svgpath" in edge) {
    ctx.stroke(new Path2D(edge.svgpath));
  } else {
    ctx.beginPath();
    if (edge.type == "segment") {
      ctx.moveTo(...edge.start);
      ctx.lineTo(...edge.end);
    }
    if (edge.type == "rect") {
      ctx.moveTo(...edge.start);
      ctx.lineTo(edge.start[0], edge.end[1]);
      ctx.lineTo(...edge.end);
      ctx.lineTo(edge.end[0], edge.start[1]);
      ctx.lineTo(...edge.start);
    }
    if (edge.type == "arc") {
      ctx.arc(
        ...edge.start,
        edge.radius,
        deg2rad(edge.startangle),
        deg2rad(edge.endangle));
    }
    if (edge.type == "circle") {
      ctx.arc(
        ...edge.start,
        edge.radius,
        0, 2 * Math.PI);
      ctx.closePath();
    }
    if (edge.type == "curve") {
      ctx.moveTo(...edge.start);
      ctx.bezierCurveTo(...edge.cpa, ...edge.cpb, ...edge.end);
    }
    if("filled" in edge && edge.filled)
      ctx.fill();
    else
      ctx.stroke();
  }
}

function getChamferedRectPath(size, radius, chamfpos, chamfratio) {
  // chamfpos is a bitmask, left = 1, right = 2, bottom left = 4, bottom right = 8
  var path = new Path2D();
  var width = size[0];
  var height = size[1];
  var x = width * -0.5;
  var y = height * -0.5;
  var chamfOffset = Math.min(width, height) * chamfratio;
  path.moveTo(x, 0);
  if (chamfpos & 4) {
    path.lineTo(x, y + height - chamfOffset);
    path.lineTo(x + chamfOffset, y + height);
    path.lineTo(0, y + height);
  } else {
    path.arcTo(x, y + height, x + width, y + height, radius);
  }
  if (chamfpos & 8) {
    path.lineTo(x + width - chamfOffset, y + height);
    path.lineTo(x + width, y + height - chamfOffset);
    path.lineTo(x + width, 0);
  } else {
    path.arcTo(x + width, y + height, x + width, y, radius);
  }
  if (chamfpos & 2) {
    path.lineTo(x + width, y + chamfOffset);
    path.lineTo(x + width - chamfOffset, y);
    path.lineTo(0, y);
  } else {
    path.arcTo(x + width, y, x, y, radius);
  }
  if (chamfpos & 1) {
    path.lineTo(x + chamfOffset, y);
    path.lineTo(x, y + chamfOffset);
    path.lineTo(x, 0);
  } else {
    path.arcTo(x, y, x, y + height, radius);
  }
  path.closePath();
  return path;
}

function getOblongPath(size) {
  return getChamferedRectPath(size, Math.min(size[0], size[1]) / 2, 0, 0);
}

function getPolygonsPath(shape) {
  if (shape.path2d) {
    return shape.path2d;
  }
  if ("svgpath" in shape) {
    shape.path2d = new Path2D(shape.svgpath);
  } else {
    var path = new Path2D();
    for (var polygon of shape.polygons) {
      path.moveTo(...polygon[0]);
      for (var i = 1; i < polygon.length; i++) {
        path.lineTo(...polygon[i]);
      }
      path.closePath();
    }
    shape.path2d = path;
  }
  return shape.path2d;
}

function drawPolygonShape(ctx, scalefactor, shape, color) {
  if ("ref" in shape && !settings.renderReferences) return;
  if ("val" in shape && !settings.renderValues) return;
  ctx.save();
  if (!("svgpath" in shape)) {
    ctx.translate(...shape.pos);
    ctx.rotate(deg2rad(-shape.angle));
  }
  if("filled" in shape && !shape.filled) {
    ctx.strokeStyle = color;
    ctx.lineWidth = Math.max(1 / scalefactor, shape.width);
    ctx.lineCap = "round";
    ctx.lineJoin = "round";
    ctx.stroke(getPolygonsPath(shape));
  } else {
    ctx.fillStyle = color;
    ctx.fill(getPolygonsPath(shape));
  }
  ctx.restore();
}

function drawDrawing(ctx, scalefactor, drawing, color) {
  
  if (["segment", "arc", "circle", "curve", "rect"].includes(drawing.type)) {
    drawedge(ctx, scalefactor, drawing, color);
  } else if (drawing.type == "polygon") {
    drawPolygonShape(ctx, scalefactor, drawing, color);
  } else {
    drawText(ctx, drawing, color);
  }
}

function getCirclePath(radius) {
  var path = new Path2D();
  path.arc(0, 0, radius, 0, 2 * Math.PI);
  path.closePath();
  return path;
}

function getCachedPadPath(pad) {
  if (!pad.path2d) {
    // if path2d is not set, build one and cache it on pad object
    if (pad.shape == "rect") {
      pad.path2d = new Path2D();
      pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size);
    } else if (pad.shape == "oval") {
      pad.path2d = getOblongPath(pad.size);
    } else if (pad.shape == "circle") {
      pad.path2d = getCirclePath(pad.size[0] / 2);
    } else if (pad.shape == "roundrect") {
      pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0);
    } else if (pad.shape == "chamfrect") {
      pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio)
    } else if (pad.shape == "custom") {
      pad.path2d = getPolygonsPath(pad);
    }
  }
  return pad.path2d;
}

function drawPad(ctx, pad, color, outline) {
  ctx.save();
  ctx.translate(...pad.pos);
  ctx.rotate(deg2rad(pad.angle));
  if (pad.offset) {
    ctx.translate(...pad.offset);
  }
  ctx.fillStyle = color;
  ctx.strokeStyle = color;
  var path = getCachedPadPath(pad);
  if (outline) {
    ctx.stroke(path);
  } else {
    ctx.fill(path);
  }
  ctx.restore();
}

function drawPadHole(ctx, pad, padHoleColor) {
  if (pad.type != "th") return;
  ctx.save();
  ctx.translate(...pad.pos);
  ctx.rotate(deg2rad(pad.holeangle));
  ctx.fillStyle = padHoleColor;
  if (pad.drillshape == "oblong") {
    ctx.fill(getOblongPath(pad.drillsize));
  } else {
    ctx.fill(getCirclePath(pad.drillsize[0] / 2));
  }
  ctx.restore();
}

function drawFootprint(ctx, layer, scalefactor, footprint, colors, highlight, outline) {
  if (highlight) {
    // draw bounding box
    if (footprint.layer == layer) {
      ctx.save();
      ctx.globalAlpha = 0.2;
      ctx.translate(...footprint.bbox.pos);
      ctx.rotate(deg2rad(-footprint.bbox.angle));
      ctx.translate(...footprint.bbox.relpos);
      ctx.fillStyle = colors.pad;
      ctx.fillRect(0, 0, ...footprint.bbox.size);
      ctx.globalAlpha = 1;
      ctx.strokeStyle = colors.pad;
      ctx.strokeRect(0, 0, ...footprint.bbox.size);
      ctx.restore();
    }
  }
  // draw drawings
  for (var drawing of footprint.drawings) {
    if (drawing.layer == layer) {
      drawDrawing(ctx, scalefactor, drawing.drawing, colors.pad);
    }
  }
  // draw pads
  if (settings.renderPads) {
    for (var pad of footprint.pads) {
      if (pad.layers.includes(layer)) {
        drawPad(ctx, pad, colors.pad, outline);
      
        if (pad.pin1 && settings.highlightpin1) {
          drawPad(ctx, pad, colors.outline, true);
        }
      }
    }
    for (var pad of footprint.pads) {
      drawPadHole(ctx, pad, colors.padHole);
    }
  }
}

function drawEdgeCuts(canvas, scalefactor) {
  var ctx = canvas.getContext("2d");
  var edgecolor = getComputedStyle(topmostdiv).getPropertyValue('--pcb-edge-color');
  for (var edge of pcbdata.edges) {
    drawDrawing(ctx, scalefactor, edge, edgecolor);
  }
}

function drawFootprints(canvas, layer, scalefactor, highlight) {
  var ctx = canvas.getContext("2d");
  ctx.lineWidth = 3 / scalefactor;
  var style = getComputedStyle(topmostdiv);

  var colors = {
    pad: style.getPropertyValue('--pad-color'),
    padHole: style.getPropertyValue('--pad-hole-color'),
    outline: style.getPropertyValue('--pin1-outline-color'),
    dnp: style.getPropertyValue('--dnp-color-highlight'),
  }

  for (var i = 0; i < pcbdata.footprints.length; i++) {
    var mod = pcbdata.footprints[i];
    var outline = settings.renderDnpOutline && pcbdata.bom.skipped.includes(i);
    var h = highlightedFootprints.includes(i);
    var d = markedFootprints.has(i);
    if (highlight) {
      if(h && d) {
        colors.pad = style.getPropertyValue('--pad-color-highlight-both');
        colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-both');
      } else if (h) {
        colors.pad = style.getPropertyValue('--pad-color-highlight');
        colors.outline = style.getPropertyValue('--pin1-outline-color-highlight');
      } else if (d) {
        colors.pad = style.getPropertyValue('--pad-color-highlight-marked');
        colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-marked');
      }
    }
    if( h || d || !highlight) {
      drawFootprint(ctx, layer, scalefactor, mod, colors, highlight, outline);
    }
  }
}

function drawBgLayer(layername, canvas, layer, scalefactor, edgeColor, polygonColor, textColor) {
  var ctx = canvas.getContext("2d");
  for (var d of pcbdata.drawings[layername][layer]) {
    if (["segment", "arc", "circle", "curve", "rect"].includes(d.type)) {
      drawedge(ctx, scalefactor, d, edgeColor);
    } else if (d.type == "polygon") {
      drawPolygonShape(ctx, scalefactor, d, polygonColor);
    } else {
      drawText(ctx, d, textColor);
    }
  }
}

function drawTracks(canvas, layer, color, highlight) {
  ctx = canvas.getContext("2d");
  ctx.strokeStyle = color;
  ctx.lineCap = "round";
  for (var track of pcbdata.tracks[layer]) {
    if (highlight && highlightedNet != track.net) continue;
    ctx.lineWidth = track.width;
    ctx.beginPath();
    if ('radius' in track) {
      ctx.arc(
        ...track.start,
        track.radius,
        deg2rad(track.startangle),
        deg2rad(track.endangle));
    } else {
      ctx.moveTo(...track.start);
      ctx.lineTo(...track.end);
    }
    ctx.stroke();
  }
}

function drawZones(canvas, layer, color, highlight) {
  ctx = canvas.getContext("2d");
  ctx.strokeStyle = color;
  ctx.fillStyle = color;
  ctx.lineJoin = "round";
  for (var zone of pcbdata.zones[layer]) {
    if (!zone.path2d) {
      zone.path2d = getPolygonsPath(zone);
    }
    if (highlight && highlightedNet != zone.net) continue;
    ctx.fill(zone.path2d);
    if (zone.width > 0) {
      ctx.lineWidth = zone.width;
      ctx.stroke(zone.path2d);
    }
  }
}

function clearCanvas(canvas, color = null) {
  var ctx = canvas.getContext("2d");
  ctx.save();
  ctx.setTransform(1, 0, 0, 1, 0, 0);
  if (color) {
    ctx.fillStyle = color;
    ctx.fillRect(0, 0, canvas.width, canvas.height);
  } else {
    if (!window.matchMedia("print").matches)
      ctx.clearRect(0, 0, canvas.width, canvas.height);
  }
  ctx.restore();
}

function drawNets(canvas, layer, highlight) {
  var style = getComputedStyle(topmostdiv);
  if (settings.renderTracks) {
    var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color');
    drawTracks(canvas, layer, trackColor, highlight);
  }
  if (settings.renderZones) {
    var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color');
    drawZones(canvas, layer, zoneColor, highlight);
  }
  if (highlight && settings.renderPads) {
    var padColor = style.getPropertyValue('--pad-color-highlight');
    var padHoleColor = style.getPropertyValue('--pad-hole-color');
    var ctx = canvas.getContext("2d");
    for (var footprint of pcbdata.footprints) {
      // draw pads
      var padDrawn = false;
      for (var pad of footprint.pads) {
        if (highlightedNet != pad.net) continue;
        if (pad.layers.includes(layer)) {
          drawPad(ctx, pad, padColor, false);
          padDrawn = true;
        }
      }
      if (padDrawn) {
        // redraw all pad holes because some pads may overlap
        for (var pad of footprint.pads) {
          drawPadHole(ctx, pad, padHoleColor);
        }
      }
    }
  }
}

function drawHighlightsOnLayer(canvasdict, clear = true) {
  if (clear) {
    clearCanvas(canvasdict.highlight);
  }
  if (markedFootprints.size > 0 || highlightedFootprints.length > 0) {
    drawFootprints(canvasdict.highlight, canvasdict.layer,
      canvasdict.transform.s * canvasdict.transform.zoom, true);
  }
  if (highlightedNet !== null) {
    drawNets(canvasdict.highlight, canvasdict.layer, true);
  }
}

function drawHighlights() {
  drawHighlightsOnLayer(allcanvas.front);
  drawHighlightsOnLayer(allcanvas.back);
}

function drawBackground(canvasdict, clear = true) {
  if (clear) {
    clearCanvas(canvasdict.bg);
    clearCanvas(canvasdict.fab);
    clearCanvas(canvasdict.silk);
  }

  drawNets(canvasdict.bg, canvasdict.layer, false);
  drawFootprints(canvasdict.bg, canvasdict.layer,
    canvasdict.transform.s * canvasdict.transform.zoom, false);

  drawEdgeCuts(canvasdict.bg, canvasdict.transform.s * canvasdict.transform.zoom);

  var style = getComputedStyle(topmostdiv);
  var edgeColor = style.getPropertyValue('--silkscreen-edge-color');
  var polygonColor = style.getPropertyValue('--silkscreen-polygon-color');
  var textColor = style.getPropertyValue('--silkscreen-text-color');
  if (settings.renderSilkscreen) {
    drawBgLayer(
      "silkscreen", canvasdict.silk, canvasdict.layer,
      canvasdict.transform.s * canvasdict.transform.zoom,
      edgeColor, polygonColor, textColor);
  }
  edgeColor = style.getPropertyValue('--fabrication-edge-color');
  polygonColor = style.getPropertyValue('--fabrication-polygon-color');
  textColor = style.getPropertyValue('--fabrication-text-color');
  if (settings.renderFabrication) {
    drawBgLayer(
      "fabrication", canvasdict.fab, canvasdict.layer,
      canvasdict.transform.s * canvasdict.transform.zoom,
      edgeColor, polygonColor, textColor);
  }
}

function prepareCanvas(canvas, flip, transform) {
  var ctx = canvas.getContext("2d");
  ctx.setTransform(1, 0, 0, 1, 0, 0);
  var fontsize = 1.55;
  ctx.scale(transform.zoom, transform.zoom);
  ctx.translate(transform.panx, transform.pany);
  if (flip) {
    ctx.scale(-1, 1);
  }
  ctx.translate(transform.x, transform.y);
  ctx.rotate(deg2rad(settings.boardRotation));
  ctx.scale(transform.s, transform.s);
}

function prepareLayer(canvasdict) {
  var flip = (canvasdict.layer == "B");
  for (var c of ["bg", "fab", "silk", "highlight"]) {
    prepareCanvas(canvasdict[c], flip, canvasdict.transform);
  }
}

function rotateVector(v, angle) {
  angle = deg2rad(angle);
  return [
    v[0] * Math.cos(angle) - v[1] * Math.sin(angle),
    v[0] * Math.sin(angle) + v[1] * Math.cos(angle)
  ];
}

function applyRotation(bbox) {
  var corners = [
    [bbox.minx, bbox.miny],
    [bbox.minx, bbox.maxy],
    [bbox.maxx, bbox.miny],
    [bbox.maxx, bbox.maxy],
  ];
  corners = corners.map((v) => rotateVector(v, settings.boardRotation));
  return {
    minx: corners.reduce((a, v) => Math.min(a, v[0]), Infinity),
    miny: corners.reduce((a, v) => Math.min(a, v[1]), Infinity),
    maxx: corners.reduce((a, v) => Math.max(a, v[0]), -Infinity),
    maxy: corners.reduce((a, v) => Math.max(a, v[1]), -Infinity),
  }
}

function recalcLayerScale(layerdict, width, height) {
  var bbox = applyRotation(pcbdata.edges_bbox);
  var scalefactor = 0.98 * Math.min(
    width / (bbox.maxx - bbox.minx),
    height / (bbox.maxy - bbox.miny)
  );
  if (scalefactor < 0.1) {
    scalefactor = 1;
  }
  layerdict.transform.s = scalefactor;
  var flip = (layerdict.layer == "B");
  if (flip) {
    layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor + width) * 0.5;
  } else {
    layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor - width) * 0.5;
  }
  layerdict.transform.y = -((bbox.maxy + bbox.miny) * scalefactor - height) * 0.5;
  for (var c of ["bg", "fab", "silk", "highlight"]) {
    canvas = layerdict[c];
    canvas.width = width;
    canvas.height = height;
    canvas.style.width = (width / devicePixelRatio) + "px";
    canvas.style.height = (height / devicePixelRatio) + "px";
  }
}

function redrawCanvas(layerdict) {
  prepareLayer(layerdict);
  drawBackground(layerdict);
  drawHighlightsOnLayer(layerdict);
}

function resizeCanvas(layerdict) {
  var canvasdivid = {
    "F": "frontcanvas",
    "B": "backcanvas"
  } [layerdict.layer];
  var width = document.getElementById(canvasdivid).clientWidth * devicePixelRatio;
  var height = document.getElementById(canvasdivid).clientHeight * devicePixelRatio;
  recalcLayerScale(layerdict, width, height);
  redrawCanvas(layerdict);
}

function resizeAll() {
  resizeCanvas(allcanvas.front);
  resizeCanvas(allcanvas.back);
}

function pointWithinDistanceToSegment(x, y, x1, y1, x2, y2, d) {
  var A = x - x1;
  var B = y - y1;
  var C = x2 - x1;
  var D = y2 - y1;

  var dot = A * C + B * D;
  var len_sq = C * C + D * D;
  var dx, dy;
  if (len_sq == 0) {
    // start and end of the segment coincide
    dx = x - x1;
    dy = y - y1;
  } else {
    var param = dot / len_sq;
    var xx, yy;
    if (param < 0) {
      xx = x1;
      yy = y1;
    } else if (param > 1) {
      xx = x2;
      yy = y2;
    } else {
      xx = x1 + param * C;
      yy = y1 + param * D;
    }
    dx = x - xx;
    dy = y - yy;
  }
  return dx * dx + dy * dy <= d * d;
}

function modulo(n, mod) {
  return ((n % mod) + mod) % mod;
}

function pointWithinDistanceToArc(x, y, xc, yc, radius, startangle, endangle, d) {
  var dx = x - xc;
  var dy = y - yc;
  var r_sq = dx * dx + dy * dy;
  var rmin = Math.max(0, radius - d);
  var rmax = radius + d;

  if (r_sq < rmin * rmin || r_sq > rmax * rmax)
    return false;

  var angle1 = modulo(deg2rad(startangle), 2 * Math.PI);
  var dx1 = xc + radius * Math.cos(angle1) - x;
  var dy1 = yc + radius * Math.sin(angle1) - y;
  if (dx1 * dx1 + dy1 * dy1 <= d * d)
    return true;

  var angle2 = modulo(deg2rad(endangle), 2 * Math.PI);
  var dx2 = xc + radius * Math.cos(angle2) - x;
  var dy2 = yc + radius * Math.sin(angle2) - y;
  if (dx2 * dx2 + dy2 * dy2 <= d * d)
    return true;

  var angle = modulo(Math.atan2(dy, dx), 2 * Math.PI);
  if (angle1 > angle2)
    return (angle >= angle2 || angle <= angle1);
  else
    return (angle >= angle1 && angle <= angle2);
}

function pointWithinPad(x, y, pad) {
  var v = [x - pad.pos[0], y - pad.pos[1]];
  v = rotateVector(v, -pad.angle);
  if (pad.offset) {
    v[0] -= pad.offset[0];
    v[1] -= pad.offset[1];
  }
  return emptyContext2d.isPointInPath(getCachedPadPath(pad), ...v);
}

function netHitScan(layer, x, y) {
  // Check track segments
  if (settings.renderTracks && pcbdata.tracks) {
    for (var track of pcbdata.tracks[layer]) {
      if ('radius' in track) {
        if (pointWithinDistanceToArc(x, y, ...track.start, track.radius, track.startangle, track.endangle, track.width / 2)) {
          return track.net;
        }
      } else {
        if (pointWithinDistanceToSegment(x, y, ...track.start, ...track.end, track.width / 2)) {
          return track.net;
        }
      }
    }
  }
  // Check pads
  if (settings.renderPads) {
    for (var footprint of pcbdata.footprints) {
      for (var pad of footprint.pads) {
        if (pad.layers.includes(layer) && pointWithinPad(x, y, pad)) {
          return pad.net;
        }
      }
    }
  }
  return null;
}

function pointWithinFootprintBbox(x, y, bbox) {
  var v = [x - bbox.pos[0], y - bbox.pos[1]];
  v = rotateVector(v, bbox.angle);
  return bbox.relpos[0] <= v[0] && v[0] <= bbox.relpos[0] + bbox.size[0] &&
    bbox.relpos[1] <= v[1] && v[1] <= bbox.relpos[1] + bbox.size[1];
}

function bboxHitScan(layer, x, y) {
  var result = [];
  for (var i = 0; i < pcbdata.footprints.length; i++) {
    var footprint = pcbdata.footprints[i];
    if (footprint.layer == layer) {
      if (pointWithinFootprintBbox(x, y, footprint.bbox)) {
        result.push(i);
      }
    }
  }
  return result;
}

function handlePointerDown(e, layerdict) {
  if (e.button != 0 && e.button != 1) {
    return;
  }
  e.preventDefault();
  e.stopPropagation();

  if (!e.hasOwnProperty("offsetX")) {
    // The polyfill doesn't set this properly
    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
    e.offsetY = e.pageY - e.currentTarget.offsetTop;
  }

  layerdict.pointerStates[e.pointerId] = {
    distanceTravelled: 0,
    lastX: e.offsetX,
    lastY: e.offsetY,
    downTime: Date.now(),
  };
}

function handleMouseClick(e, layerdict) {
  if (!e.hasOwnProperty("offsetX")) {
    // The polyfill doesn't set this properly
    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
    e.offsetY = e.pageY - e.currentTarget.offsetTop;
  }

  var x = e.offsetX;
  var y = e.offsetY;
  var t = layerdict.transform;
  if (layerdict.layer == "B") {
    x = (devicePixelRatio * x / t.zoom - t.panx + t.x) / -t.s;
  } else {
    x = (devicePixelRatio * x / t.zoom - t.panx - t.x) / t.s;
  }
  y = (devicePixelRatio * y / t.zoom - t.y - t.pany) / t.s;
  var v = rotateVector([x, y], -settings.boardRotation);
  if (settings.bommode == "netlist") {
    if ("nets" in pcbdata) {
      var net = netHitScan(layerdict.layer, ...v);
      if (net !== highlightedNet) {
        netClicked(net);
      }
    }
  }

  if (highlightedNet === null) {
    var footprints = bboxHitScan(layerdict.layer, ...v);
    if (footprints.length > 0) {
      footprintsClicked(footprints);
    }
    else
    {
      clearHighlightedFootprints();
      drawHighlights();
    }
  }
}

function handlePointerLeave(e, layerdict) {
  e.preventDefault();
  e.stopPropagation();

  if (!settings.redrawOnDrag) {
    redrawCanvas(layerdict);
  }

  delete layerdict.pointerStates[e.pointerId];
}

function resetTransform(layerdict) {
  layerdict.transform.panx = 0;
  layerdict.transform.pany = 0;
  layerdict.transform.zoom = 1;
  redrawCanvas(layerdict);
}

function handlePointerUp(e, layerdict) {
  if (!e.hasOwnProperty("offsetX")) {
    // The polyfill doesn't set this properly
    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
    e.offsetY = e.pageY - e.currentTarget.offsetTop;
  }

  e.preventDefault();
  e.stopPropagation();

  if (e.button == 2) {
    // Reset pan and zoom on right click.
    resetTransform(layerdict);
    layerdict.anotherPointerTapped = false;
    return;
  }

  // We haven't necessarily had a pointermove event since the interaction started, so make sure we update this now
  var ptr = layerdict.pointerStates[e.pointerId];
  ptr.distanceTravelled += Math.abs(e.offsetX - ptr.lastX) + Math.abs(e.offsetY - ptr.lastY);

  if (e.button == 0 && ptr.distanceTravelled < 10 && Date.now() - ptr.downTime <= 500) {
    if (Object.keys(layerdict.pointerStates).length == 1) {
      if (layerdict.anotherPointerTapped) {
        // This is the second pointer coming off of a two-finger tap
        resetTransform(layerdict);
      } else {
        // This is just a regular tap
        handleMouseClick(e, layerdict);
      }
      layerdict.anotherPointerTapped = false;
    } else {
      // This is the first finger coming off of what could become a two-finger tap
      layerdict.anotherPointerTapped = true;
    }
  } else {
    if (!settings.redrawOnDrag) {
      redrawCanvas(layerdict);
    }
    layerdict.anotherPointerTapped = false;
  }

  delete layerdict.pointerStates[e.pointerId];
}

function handlePointerMove(e, layerdict) {
  if (!layerdict.pointerStates.hasOwnProperty(e.pointerId)) {
    return;
  }
  e.preventDefault();
  e.stopPropagation();

  if (!e.hasOwnProperty("offsetX")) {
    // The polyfill doesn't set this properly
    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
    e.offsetY = e.pageY - e.currentTarget.offsetTop;
  }

  var thisPtr = layerdict.pointerStates[e.pointerId];

  var dx = e.offsetX - thisPtr.lastX;
  var dy = e.offsetY - thisPtr.lastY;

  // If this number is low on pointer up, we count the action as a click
  thisPtr.distanceTravelled += Math.abs(dx) + Math.abs(dy);

  if (Object.keys(layerdict.pointerStates).length == 1) {
    // This is a simple drag
    layerdict.transform.panx += devicePixelRatio * dx / layerdict.transform.zoom;
    layerdict.transform.pany += devicePixelRatio * dy / layerdict.transform.zoom;
  } else if (Object.keys(layerdict.pointerStates).length == 2) {
    var otherPtr = Object.values(layerdict.pointerStates).filter((ptr) => ptr != thisPtr)[0];

    var oldDist = Math.sqrt(Math.pow(thisPtr.lastX - otherPtr.lastX, 2) + Math.pow(thisPtr.lastY - otherPtr.lastY, 2));
    var newDist = Math.sqrt(Math.pow(e.offsetX - otherPtr.lastX, 2) + Math.pow(e.offsetY - otherPtr.lastY, 2));

    var scaleFactor = newDist / oldDist;

    if (scaleFactor != NaN) {
      layerdict.transform.zoom *= scaleFactor;

      var zoomd = (1 - scaleFactor) / layerdict.transform.zoom;
      layerdict.transform.panx += devicePixelRatio * otherPtr.lastX * zoomd;
      layerdict.transform.pany += devicePixelRatio * otherPtr.lastY * zoomd;
    }
  }

  thisPtr.lastX = e.offsetX;
  thisPtr.lastY = e.offsetY;

  if (settings.redrawOnDrag) {
    redrawCanvas(layerdict);
  }
}

function handleMouseWheel(e, layerdict) {
  e.preventDefault();
  e.stopPropagation();
  var t = layerdict.transform;
  var wheeldelta = e.deltaY;
  if (e.deltaMode == 1) {
    // FF only, scroll by lines
    wheeldelta *= 30;
  } else if (e.deltaMode == 2) {
    wheeldelta *= 300;
  }
  var m = Math.pow(1.1, -wheeldelta / 40);
  // Limit amount of zoom per tick.
  if (m > 2) {
    m = 2;
  } else if (m < 0.5) {
    m = 0.5;
  }
  t.zoom *= m;
  var zoomd = (1 - m) / t.zoom;
  t.panx += devicePixelRatio * e.offsetX * zoomd;
  t.pany += devicePixelRatio * e.offsetY * zoomd;
  redrawCanvas(layerdict);
}

function addMouseHandlers(div, layerdict) {
  div.addEventListener("pointerdown", function(e) {
    handlePointerDown(e, layerdict);
  });
  div.addEventListener("pointermove", function(e) {
    handlePointerMove(e, layerdict);
  });
  div.addEventListener("pointerup", function(e) {
    handlePointerUp(e, layerdict);
  });
  var pointerleave = function(e) {
    handlePointerLeave(e, layerdict);
  }
  div.addEventListener("pointercancel", pointerleave);
  div.addEventListener("pointerleave", pointerleave);
  div.addEventListener("pointerout", pointerleave);

  div.onwheel = function(e) {
    handleMouseWheel(e, layerdict);
  }
  for (var element of [div, layerdict.bg, layerdict.fab, layerdict.silk, layerdict.highlight]) {
    element.addEventListener("contextmenu", function(e) {
      e.preventDefault();
    }, false);
  }
}

function setRedrawOnDrag(value) {
  settings.redrawOnDrag = value;
  writeStorage("redrawOnDrag", value);
}

function setBoardRotation(value) {
  settings.boardRotation = value * 5;
  writeStorage("boardRotation", settings.boardRotation);
  document.getElementById("rotationDegree").textContent = settings.boardRotation;
  resizeAll();
}

function initRender() {
  allcanvas = {
    front: {
      transform: {
        x: 0,
        y: 0,
        s: 1,
        panx: 0,
        pany: 0,
        zoom: 1,
      },
      pointerStates: {},
      anotherPointerTapped: false,
      bg: document.getElementById("F_bg"),
      fab: document.getElementById("F_fab"),
      silk: document.getElementById("F_slk"),
      highlight: document.getElementById("F_hl"),
      layer: "F",
    },
    back: {
      transform: {
        x: 0,
        y: 0,
        s: 1,
        panx: 0,
        pany: 0,
        zoom: 1,
      },
      pointerStates: {},
      anotherPointerTapped: false,
      bg: document.getElementById("B_bg"),
      fab: document.getElementById("B_fab"),
      silk: document.getElementById("B_slk"),
      highlight: document.getElementById("B_hl"),
      layer: "B",
    }
  };
  addMouseHandlers(document.getElementById("frontcanvas"), allcanvas.front);
  addMouseHandlers(document.getElementById("backcanvas"), allcanvas.back);
}

///////////////////////////////////////////////

///////////////////////////////////////////////
/*
 * Table reordering via Drag'n'Drop
 * Inspired by: https://htmldom.dev/drag-and-drop-table-column
 */

function setBomHandlers() {

  const bom = document.getElementById('bomtable');

  let dragName;
  let placeHolderElements;
  let draggingElement;
  let forcePopulation;
  let xOffset;
  let yOffset;
  let wasDragged;

  const mouseUpHandler = function(e) {
    // Delete dragging element
    draggingElement.remove();

    // Make BOM selectable again
    bom.style.removeProperty("userSelect");

    // Remove listeners
    document.removeEventListener('mousemove', mouseMoveHandler);
    document.removeEventListener('mouseup', mouseUpHandler);

    if (wasDragged) {
      // Redraw whole BOM
      populateBomTable();
    }
  }

  const mouseMoveHandler = function(e) {
    // Notice the dragging
    wasDragged = true;

    // Make the dragged element visible
    draggingElement.style.removeProperty("display");

    // Set elements position to mouse position
    draggingElement.style.left = `${e.screenX - xOffset}px`;
    draggingElement.style.top = `${e.screenY - yOffset}px`;

    // Forced redrawing of BOM table
    if (forcePopulation) {
      forcePopulation = false;
      // Copy array
      phe = Array.from(placeHolderElements);
      // populate BOM table again
      populateBomHeader(dragName, phe);
      populateBomBody(dragName, phe);
    }

    // Set up array of hidden columns
    var hiddenColumns = Array.from(settings.hiddenColumns);
    // In the ungrouped mode, quantity don't exist
    if (settings.bommode === "ungrouped")
      hiddenColumns.push("Qty");
    // If no checkbox fields can be found, we consider them hidden
    if (settings.checkboxes.length == 0)
      hiddenColumns.push("checkboxes");

    // Get table headers and group them into checkboxes, extrafields and normal headers
    const bh = document.getElementById("bomhead");
    headers = Array.from(bh.querySelectorAll("th"))
    headers.shift() // numCol is not part of the columnOrder
    headerGroups = []
    lastCompoundClass = null;
    for (i = 0; i < settings.columnOrder.length; i++) {
      cElem = settings.columnOrder[i];
      if (hiddenColumns.includes(cElem)) {
        // Hidden columns appear as a dummy element
        headerGroups.push([]);
        continue;
      }
      elem = headers.filter(e => getColumnOrderName(e) === cElem)[0];
      if (elem.classList.contains("bom-checkbox")) {
        if (lastCompoundClass === "bom-checkbox") {
          cbGroup = headerGroups.pop();
          cbGroup.push(elem);
          headerGroups.push(cbGroup);
        } else {
          lastCompoundClass = "bom-checkbox";
          headerGroups.push([elem])
        }
      } else {
        headerGroups.push([elem])
      }
    }

    // Copy settings.columnOrder
    var columns = Array.from(settings.columnOrder)

    // Set up array with indices of hidden columns
    var hiddenIndices = hiddenColumns.map(e => settings.columnOrder.indexOf(e));
    var dragIndex = columns.indexOf(dragName);
    var swapIndex = dragIndex;
    var swapDone = false;

    // Check if the current dragged element is swapable with the left or right element
    if (dragIndex > 0) {
      // Get left headers boundingbox
      swapIndex = dragIndex - 1;
      while (hiddenIndices.includes(swapIndex) && swapIndex > 0)
        swapIndex--;
      if (!hiddenIndices.includes(swapIndex)) {
        box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
        if (e.clientX < box.left + window.scrollX + (box.width / 2)) {
          swapElement = columns[dragIndex];
          columns.splice(dragIndex, 1);
          columns.splice(swapIndex, 0, swapElement);
          forcePopulation = true;
          swapDone = true;
        }
      }
    }
    if ((!swapDone) && dragIndex < headerGroups.length - 1) {
      // Get right headers boundingbox
      swapIndex = dragIndex + 1;
      while (hiddenIndices.includes(swapIndex))
        swapIndex++;
      if (swapIndex < headerGroups.length) {
        box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
        if (e.clientX > box.left + window.scrollX + (box.width / 2)) {
          swapElement = columns[dragIndex];
          columns.splice(dragIndex, 1);
          columns.splice(swapIndex, 0, swapElement);
          forcePopulation = true;
          swapDone = true;
        }
      }
    }

    // Write back change to storage
    if (swapDone) {
      settings.columnOrder = columns
      writeStorage("columnOrder", JSON.stringify(columns));
    }

  }

  const mouseDownHandler = function(e) {
    var target = e.target;
    if (target.tagName.toLowerCase() != "td")
      target = target.parentElement;

    // Used to check if a dragging has ever happened
    wasDragged = false;

    // Create new element which will be displayed as the dragged column
    draggingElement = document.createElement("div")
    draggingElement.classList.add("dragging");
    draggingElement.style.display = "none";
    draggingElement.style.position = "absolute";
    draggingElement.style.overflow = "hidden";

    // Get bomhead and bombody elements
    const bh = document.getElementById("bomhead");
    const bb = document.getElementById("bombody");

    // Get all compound headers for the current column
    var compoundHeaders;
    if (target.classList.contains("bom-checkbox")) {
      compoundHeaders = Array.from(bh.querySelectorAll("th.bom-checkbox"));
    } else {
      compoundHeaders = [target];
    }

    // Create new table which will display the column
    var newTable = document.createElement("table");
    newTable.classList.add("bom");
    newTable.style.background = "white";
    draggingElement.append(newTable);

    // Create new header element
    var newHeader = document.createElement("thead");
    newTable.append(newHeader);

    // Set up array for storing all placeholder elements
    placeHolderElements = [];

    // Add all compound headers to the new thead element and placeholders
    compoundHeaders.forEach(function(h) {
      clone = cloneElementWithDimensions(h);
      newHeader.append(clone);
      placeHolderElements.push(clone);
    });

    // Create new body element
    var newBody = document.createElement("tbody");
    newTable.append(newBody);

    // Get indices for compound headers
    var idxs = compoundHeaders.map(e => getBomTableHeaderIndex(e));

    // For each row in the BOM body...
    var rows = bb.querySelectorAll("tr");
    rows.forEach(function(row) {
      // ..get the cells for the compound column
      const tds = row.querySelectorAll("td");
      var copytds = idxs.map(i => tds[i]);
      // Add them to the new element and the placeholders
      var newRow = document.createElement("tr");
      copytds.forEach(function(td) {
        clone = cloneElementWithDimensions(td);
        newRow.append(clone);
        placeHolderElements.push(clone);
      });
      newBody.append(newRow);
    });

    // Compute width for compound header
    var width = compoundHeaders.reduce((acc, x) => acc + x.clientWidth, 0);
    draggingElement.style.width = `${width}px`;

    // Insert the new dragging element and disable selection on BOM
    bom.insertBefore(draggingElement, null);
    bom.style.userSelect = "none";

    // Determine the mouse position offset
    xOffset = e.screenX - compoundHeaders.reduce((acc, x) => Math.min(acc, x.offsetLeft), compoundHeaders[0].offsetLeft);
    yOffset = e.screenY - compoundHeaders[0].offsetTop;

    // Get name for the column in settings.columnOrder
    dragName = getColumnOrderName(target);

    // Change text and class for placeholder elements
    placeHolderElements = placeHolderElements.map(function(e) {
      newElem = cloneElementWithDimensions(e);
      newElem.textContent = "";
      newElem.classList.add("placeholder");
      return newElem;
    });

    // On next mouse move, the whole BOM needs to be redrawn to show the placeholders
    forcePopulation = true;

    // Add listeners for move and up on mouse
    document.addEventListener('mousemove', mouseMoveHandler);
    document.addEventListener('mouseup', mouseUpHandler);
  }

  // In netlist mode, there is nothing to reorder
  if (settings.bommode === "netlist")
    return;

  // Add mouseDownHandler to every column except the numCol
  bom.querySelectorAll("th")
    .forEach(function(head) {
      if (!head.classList.contains("numCol")) {
        head.onmousedown = mouseDownHandler;
      }
    });

}

function getBoundingClientRectFromMultiple(elements) {
  var elems = Array.from(elements);

  if (elems.length == 0)
    return null;

  var box = elems.shift()
    .getBoundingClientRect();

  elems.forEach(function(elem) {
    var elembox = elem.getBoundingClientRect();
    box.left = Math.min(elembox.left, box.left);
    box.top = Math.min(elembox.top, box.top);
    box.width += elembox.width;
    box.height = Math.max(elembox.height, box.height);
  });

  return box;
}

function cloneElementWithDimensions(elem) {
  var newElem = elem.cloneNode(true);
  newElem.style.height = window.getComputedStyle(elem).height;
  newElem.style.width = window.getComputedStyle(elem).width;
  return newElem;
}

function getBomTableHeaderIndex(elem) {
  const bh = document.getElementById('bomhead');
  const ths = Array.from(bh.querySelectorAll("th"));
  return ths.indexOf(elem);
}

function getColumnOrderName(elem) {
  var cname = elem.getAttribute("col_name");
  if (cname === "bom-checkbox")
    return "checkboxes";
  else
    return cname;
}

function resizableGrid(tablehead) {
  var cols = tablehead.firstElementChild.children;
  var rowWidth = tablehead.offsetWidth;

  for (var i = 1; i < cols.length; i++) {
    if (cols[i].classList.contains("bom-checkbox"))
      continue;
    cols[i].style.width = ((cols[i].clientWidth - paddingDiff(cols[i])) * 100 / rowWidth) + '%';
  }

  for (var i = 1; i < cols.length - 1; i++) {
    var div = document.createElement('div');
    div.className = "column-width-handle";
    cols[i].appendChild(div);
    setListeners(div);
  }

  function setListeners(div) {
    var startX, curCol, nxtCol, curColWidth, nxtColWidth, rowWidth;

    div.addEventListener('mousedown', function(e) {
      e.preventDefault();
      e.stopPropagation();

      curCol = e.target.parentElement;
      nxtCol = curCol.nextElementSibling;
      startX = e.pageX;

      var padding = paddingDiff(curCol);

      rowWidth = curCol.parentElement.offsetWidth;
      curColWidth = curCol.clientWidth - padding;
      nxtColWidth = nxtCol.clientWidth - padding;
    });

    document.addEventListener('mousemove', function(e) {
      if (startX) {
        var diffX = e.pageX - startX;
        diffX = -Math.min(-diffX, curColWidth - 20);
        diffX = Math.min(diffX, nxtColWidth - 20);

        curCol.style.width = ((curColWidth + diffX) * 100 / rowWidth) + '%';
        nxtCol.style.width = ((nxtColWidth - diffX) * 100 / rowWidth) + '%';
        console.log(`${curColWidth + nxtColWidth} ${(curColWidth + diffX) * 100 / rowWidth + (nxtColWidth - diffX) * 100 / rowWidth}`);
      }
    });

    document.addEventListener('mouseup', function(e) {
      curCol = undefined;
      nxtCol = undefined;
      startX = undefined;
      nxtColWidth = undefined;
      curColWidth = undefined
    });
  }

  function paddingDiff(col) {

    if (getStyleVal(col, 'box-sizing') == 'border-box') {
      return 0;
    }

    var padLeft = getStyleVal(col, 'padding-left');
    var padRight = getStyleVal(col, 'padding-right');
    return (parseInt(padLeft) + parseInt(padRight));

  }

  function getStyleVal(elm, css) {
    return (window.getComputedStyle(elm, null).getPropertyValue(css))
  }
}

///////////////////////////////////////////////

///////////////////////////////////////////////
/* DOM manipulation and misc code */

var bomsplit;
var canvassplit;
var initDone = false;
var bomSortFunction = null;
var currentSortColumn = null;
var currentSortOrder = null;
var currentHighlightedRowId;
var highlightHandlers = [];
var footprintIndexToHandler = {};
var netsToHandler = {};
var markedFootprints = new Set();
var highlightedFootprints = [];
var highlightedNet = null;
var lastClicked;

function dbg(html) {
  dbgdiv.innerHTML = html;
}

function redrawIfInitDone() {
  if (initDone) {
    redrawCanvas(allcanvas.front);
    redrawCanvas(allcanvas.back);
  }
}

function padsVisible(value) {
  writeStorage("padsVisible", value);
  settings.renderPads = value;
  redrawIfInitDone();
}

function referencesVisible(value) {
  writeStorage("referencesVisible", value);
  settings.renderReferences = value;
  redrawIfInitDone();
}

function valuesVisible(value) {
  writeStorage("valuesVisible", value);
  settings.renderValues = value;
  redrawIfInitDone();
}

function tracksVisible(value) {
  writeStorage("tracksVisible", value);
  settings.renderTracks = value;
  redrawIfInitDone();
}

function zonesVisible(value) {
  writeStorage("zonesVisible", value);
  settings.renderZones = value;
  redrawIfInitDone();
}

function dnpOutline(value) {
  writeStorage("dnpOutline", value);
  settings.renderDnpOutline = value;
  redrawIfInitDone();
}

function setDarkMode(value) {
  if (value) {
    topmostdiv.classList.add("dark");
  } else {
    topmostdiv.classList.remove("dark");
  }
  writeStorage("darkmode", value);
  settings.darkMode = value;
  redrawIfInitDone();
}

function setShowBOMColumn(field, value) {
  if (field === "references") {
    var rl = document.getElementById("reflookup");
    rl.disabled = !value;
    if (!value) {
      rl.value = "";
      updateRefLookup("");
    }
  }

  var n = settings.hiddenColumns.indexOf(field);
  if (value) {
    if (n != -1) {
      settings.hiddenColumns.splice(n, 1);
    }
  } else {
    if (n == -1) {
      settings.hiddenColumns.push(field);
    }
  }

  writeStorage("hiddenColumns", JSON.stringify(settings.hiddenColumns));

  if (initDone) {
    populateBomTable();
  }

  redrawIfInitDone();
}


function setFullscreen(value) {
  if (value) {
    document.documentElement.requestFullscreen();
  } else {
    document.exitFullscreen();
  }
}

function fabricationVisible(value) {
  writeStorage("fabricationVisible", value);
  settings.renderFabrication = value;
  redrawIfInitDone();
}

function silkscreenVisible(value) {
  writeStorage("silkscreenVisible", value);
  settings.renderSilkscreen = value;
  redrawIfInitDone();
}

function setHighlightPin1(value) {
  writeStorage("highlightpin1", value);
  settings.highlightpin1 = value;
  redrawIfInitDone();
}

function getStoredCheckboxRefs(checkbox) {
  function convert(ref) {
    var intref = parseInt(ref);
    if (isNaN(intref)) {
      for (var i = 0; i < pcbdata.footprints.length; i++) {
        if (pcbdata.footprints[i].ref == ref) {
          return i;
        }
      }
      return -1;
    } else {
      return intref;
    }
  }
  if (!(checkbox in settings.checkboxStoredRefs)) {
    var val = readStorage("checkbox_" + checkbox);
    settings.checkboxStoredRefs[checkbox] = val ? val : "";
  }
  if (!settings.checkboxStoredRefs[checkbox]) {
    return new Set();
  } else {
    return new Set(settings.checkboxStoredRefs[checkbox].split(",").map(r => convert(r)).filter(a => a >= 0));
  }
}

function getCheckboxState(checkbox, references) {
  var storedRefsSet = getStoredCheckboxRefs(checkbox);
  var currentRefsSet = new Set(references.map(r => r[1]));
  // Get difference of current - stored
  var difference = new Set(currentRefsSet);
  for (ref of storedRefsSet) {
    difference.delete(ref);
  }
  if (difference.size == 0) {
    // All the current refs are stored
    return "checked";
  } else if (difference.size == currentRefsSet.size) {
    // None of the current refs are stored
    return "unchecked";
  } else {
    // Some of the refs are stored
    return "indeterminate";
  }
}

function setBomCheckboxState(checkbox, element, references) {
  var state = getCheckboxState(checkbox, references);
  element.checked = (state == "checked");
  element.indeterminate = (state == "indeterminate");
}

function createCheckboxChangeHandler(checkbox, references, row) {
  return function() {
    refsSet = getStoredCheckboxRefs(checkbox);
    var markWhenChecked = settings.markWhenChecked == checkbox;
    eventArgs = {
      checkbox: checkbox,
      refs: references,
    }
    if (this.checked) {
      // checkbox ticked
      for (var ref of references) {
        refsSet.add(ref[1]);
      }
      if (markWhenChecked) {
        row.classList.add("checked");
        for (var ref of references) {
          markedFootprints.add(ref[1]);
        }
        drawHighlights();
      }
      eventArgs.state = 'checked';
    } else {
      // checkbox unticked
      for (var ref of references) {
        refsSet.delete(ref[1]);
      }
      if (markWhenChecked) {
        row.classList.remove("checked");
        for (var ref of references) {
          markedFootprints.delete(ref[1]);
        }
        drawHighlights();
      }
      eventArgs.state = 'unchecked';
    }
    settings.checkboxStoredRefs[checkbox] = [...refsSet].join(",");
    writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
    updateCheckboxStats(checkbox);
    EventHandler.emitEvent(IBOM_EVENT_TYPES.CHECKBOX_CHANGE_EVENT, eventArgs);
  }
}

function clearHighlightedFootprints() {
  if (currentHighlightedRowId) {
    document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
    currentHighlightedRowId = null;
    highlightedFootprints = [];
    highlightedNet = null;
  }
}

function createRowHighlightHandler(rowid, refs, net) {
  return function() {
    if (currentHighlightedRowId) {
      if (currentHighlightedRowId == rowid) {
        return;
      }
      document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
    }
    document.getElementById(rowid).classList.add("highlighted");
    currentHighlightedRowId = rowid;
    highlightedFootprints = refs ? refs.map(r => r[1]) : [];
    highlightedNet = net;
    drawHighlights();
    EventHandler.emitEvent(
      IBOM_EVENT_TYPES.HIGHLIGHT_EVENT, {
        rowid: rowid,
        refs: refs,
        net: net
      });
  }
}

function entryMatches(entry) {
  if (settings.bommode == "netlist") {
    // entry is just a net name
    return entry.toLowerCase().indexOf(filter) >= 0;
  }
  // check refs
  if (!settings.hiddenColumns.includes("references")) {
    for (var ref of entry[3]) {
      if (ref[0].toLowerCase().indexOf(filter) >= 0) {
        return true;
      }
    }
  }
  // check extra fields
  if (!settings.hiddenColumns.includes("extrafields")) {
    for (var i in config.extra_fields) {
      if (entry[4][i].toLowerCase().indexOf(filter) >= 0) {
        return true;
      }
    }
  }
  // check value
  if (!settings.hiddenColumns.includes("value")) {
    if (entry[1].toLowerCase().indexOf(filter) >= 0) {
      return true;
    }
  }
  // check footprint
  if (!settings.hiddenColumns.includes("footprint")) {
    if (entry[2].toLowerCase().indexOf(filter) >= 0) {
      return true;
    }
  }
  return false;
}

function findRefInEntry(entry) {
  return entry[3].filter(r => r[0].toLowerCase().startsWith(reflookup));
}

function highlightFilter(s) {
  if (!filter) {
    return s;
  }
  var parts = s.toLowerCase().split(filter);
  if (parts.length == 1) {
    return s;
  }
  var r = "";
  var pos = 0;
  for (var i in parts) {
    if (i > 0) {
      r += '<mark class="highlight">' +
        s.substring(pos, pos + filter.length) +
        '</mark>';
      pos += filter.length;
    }
    r += s.substring(pos, pos + parts[i].length);
    pos += parts[i].length;
  }
  return r;
}

function checkboxSetUnsetAllHandler(checkboxname) {
  return function() {
    var checkboxnum = 0;
    while (checkboxnum < settings.checkboxes.length &&
      settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
      checkboxnum++;
    }
    if (checkboxnum >= settings.checkboxes.length) {
      return;
    }
    var allset = true;
    var checkbox;
    var row;
    for (row of bombody.childNodes) {
      checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
      if (!checkbox.checked || checkbox.indeterminate) {
        allset = false;
        break;
      }
    }
    for (row of bombody.childNodes) {
      checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
      checkbox.checked = !allset;
      checkbox.indeterminate = false;
      checkbox.onchange();
    }
  }
}

function createColumnHeader(name, cls, comparator, is_checkbox = false) {
  var th = document.createElement("TH");
  th.innerHTML = name;
  th.classList.add(cls);
  if (is_checkbox)
    th.setAttribute("col_name", "bom-checkbox");
  else
    th.setAttribute("col_name", name);
  var span = document.createElement("SPAN");
  span.classList.add("sortmark");
  span.classList.add("none");
  th.appendChild(span);
  var spacer = document.createElement("div");
  spacer.className = "column-spacer";
  th.appendChild(spacer);
  if (name=="References") //Sorting by column References
  {
    bomSortFunction = comparator;
    currentSortColumn = th;
    currentSortColumn.childNodes[1].classList.remove("none");
    currentSortColumn.childNodes[1].classList.add("asc");
    currentSortOrder = "asc";
  }
  spacer.onclick = function() {
    if (currentSortColumn && th !== currentSortColumn) {
      // Currently sorted by another column
      currentSortColumn.childNodes[1].classList.remove(currentSortOrder);
      currentSortColumn.childNodes[1].classList.add("none");
      currentSortColumn = null;
      currentSortOrder = null;
    }
    if (currentSortColumn && th === currentSortColumn) {
      // Already sorted by this column
      if (currentSortOrder == "asc") {
        // Sort by this column, descending order
        bomSortFunction = function(a, b) {
          return -comparator(a, b);
        }
        currentSortColumn.childNodes[1].classList.remove("asc");
        currentSortColumn.childNodes[1].classList.add("desc");
        currentSortOrder = "desc";
      } else {
        // Unsort
        bomSortFunction = null;
        currentSortColumn.childNodes[1].classList.remove("desc");
        currentSortColumn.childNodes[1].classList.add("none");
        currentSortColumn = null;
        currentSortOrder = null;
      }
    } else {
      // Sort by this column, ascending order
      bomSortFunction = comparator;
      currentSortColumn = th;
      currentSortColumn.childNodes[1].classList.remove("none");
      currentSortColumn.childNodes[1].classList.add("asc");
      currentSortOrder = "asc";
    }
    populateBomBody();
  }
  if (is_checkbox) {
    spacer.onclick = fancyDblClickHandler(
      spacer, spacer.onclick, checkboxSetUnsetAllHandler(name));
  }
  return th;
}

function populateBomHeader(placeHolderColumn = null, placeHolderElements = null) {
  while (bomhead.firstChild) {
    bomhead.removeChild(bomhead.firstChild);
  }
  var tr = document.createElement("TR");
  var th = document.createElement("TH");
  th.classList.add("numCol");

  var vismenu = document.createElement("div");
  vismenu.id = "vismenu";
  vismenu.classList.add("menu");

  var visbutton = document.createElement("div");
  visbutton.classList.add("visbtn");
  visbutton.classList.add("hideonprint");

  var viscontent = document.createElement("div");
  viscontent.classList.add("menu-content");
  viscontent.id = "vismenu-content";

  settings.columnOrder.forEach(column => {
    if (typeof column !== "string")
      return;

    // Skip empty columns
    if (column === "checkboxes" && settings.checkboxes.length == 0)
      return;
    else if (column === "Qty" && settings.bommode == "ungrouped")
      return;

    var label = document.createElement("label");
    label.classList.add("menu-label");

    var input = document.createElement("input");
    input.classList.add("visibility_checkbox");
    input.type = "checkbox";
    input.onchange = function(e) {
      setShowBOMColumn(column, e.target.checked)
    };
    input.checked = !(settings.hiddenColumns.includes(column));

    label.appendChild(input);
    if (column.length > 0)
      label.append(column[0].toUpperCase() + column.slice(1));

    viscontent.appendChild(label);
  });

  viscontent.childNodes[0].classList.add("menu-label-top");

  vismenu.appendChild(visbutton);
  if (settings.bommode != "netlist") {
    vismenu.appendChild(viscontent);
    th.appendChild(vismenu);
  }
  tr.appendChild(th);

  var checkboxCompareClosure = function(checkbox) {
    return (a, b) => {
      var stateA = getCheckboxState(checkbox, a[3]);
      var stateB = getCheckboxState(checkbox, b[3]);
      if (stateA > stateB) return -1;
      if (stateA < stateB) return 1;
      return 0;
    }
  }
  if (settings.bommode == "netlist") {
    th = createColumnHeader("Net name", "bom-netname", (a, b) => {
      if (a > b) return -1;
      if (a < b) return 1;
      return 0;
    });
    tr.appendChild(th);
  } else {
    // Filter hidden columns
    var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
    columns.forEach((column) => {
      if (column === placeHolderColumn) {
        var n = 1;
        if (column === "checkboxes")
          n = settings.checkboxes.length;
        for (i = 0; i < n; i++) {
          td = placeHolderElements.shift();
          tr.appendChild(td);
        }
        return;
      }
      if (column === "checkboxes") {
        for (var checkbox of settings.checkboxes) {
          th = createColumnHeader(
            checkbox, "bom-checkbox", checkboxCompareClosure(checkbox), true);
          tr.appendChild(th);
        }
      }
      if (column === "References") {
        tr.appendChild(createColumnHeader("References", "references", (a, b) => {
          
          var i = 0;
          while (i < a[3].length && i < b[3].length) {
            var compres = refCompare(a[3][i], b[3][i]);
            if (compres!=0) return compres;
            //if (a[3][i] != b[3][i]) return a[3][i] > b[3][i] ? 1 : -1;
            i++;
          }
          return a[3].length - b[3].length;
        }));
      }
      if (column === "Value") {
        tr.appendChild(createColumnHeader("Value", "value", (a, b) => {
          return valueCompare(a[5], b[5], a[1], b[1]);
        }));
      }
      if (column === "Footprint") {
        tr.appendChild(createColumnHeader("Footprint", "footprint", (a, b) => {
          if (a[2] != b[2]) return a[2] > b[2] ? 1 : -1;
          else return 0;
        }));
      }
      if (column === "Qty" && settings.bommode == "grouped") {
        tr.appendChild(createColumnHeader("Qty", "quantity", (a, b) => {
          return a[3].length - b[3].length;
        }));
      }
      // Extra fields
      var extraFieldCompareClosure = function(fieldIndex) {
        return (a, b) => {
          var fa = a[4][fieldIndex];
          var fb = b[4][fieldIndex];
          if (fa != fb) return fa > fb ? 1 : -1;
          else return 0;
        }
      }
      var i = config.extra_fields.indexOf(column);
      if (i < 0)
        return;
      tr.appendChild(createColumnHeader(
        column, `extrafield${i+1}`, extraFieldCompareClosure(i)));
    });
  }
  bomhead.appendChild(tr);
}

function populateBomBody(placeholderColumn = null, placeHolderElements = null) {
  while (bom.firstChild) {
    bom.removeChild(bom.firstChild);
  }
  highlightHandlers = [];
  footprintIndexToHandler = {};
  netsToHandler = {};
  currentHighlightedRowId = null;
  var first = true;
  if (settings.bommode == "netlist") {
    bomtable = pcbdata.nets.slice();
  } else {
    switch (settings.canvaslayout) {
      case 'F':
        bomtable = pcbdata.bom.F.slice();
        break;
      case 'FB':
        bomtable = pcbdata.bom.both.slice();
        break;
      case 'B':
        bomtable = pcbdata.bom.B.slice();
        break;
    }
    if (settings.bommode == "ungrouped") {
      // expand bom table
      expandedTable = []
      for (var bomentry of bomtable) {
        for (var ref of bomentry[3]) {
          expandedTable.push([1, bomentry[1], bomentry[2],
            [ref], bomentry[4], bomentry[5]
          ]);
        }
      }
      bomtable = expandedTable;
    }
  }
  if (bomSortFunction) {
    bomtable = bomtable.sort(bomSortFunction);
  }
  for (var i in bomtable) {
    var bomentry = bomtable[i];
    if (filter && !entryMatches(bomentry)) {
      continue;
    }
    var references = null;
    var netname = null;
    var tr = document.createElement("TR");
    var td = document.createElement("TD");
    var rownum = +i + 1;
    tr.id = "bomrow" + rownum;
    td.textContent = rownum;
    tr.appendChild(td);
    if (settings.bommode == "netlist") {
      netname = bomentry;
      td = document.createElement("TD");
      td.innerHTML = highlightFilter(netname ? netname : "&lt;no net&gt;");
      tr.appendChild(td);
    } else {
      if (reflookup) {
        references = findRefInEntry(bomentry);
        if (references.length == 0) {
          continue;
        }
      } else {
        references = bomentry[3];
      }
      // Filter hidden columns
      var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
      columns.forEach((column) => {
        if (column === placeholderColumn) {
          var n = 1;
          if (column === "checkboxes")
            n = settings.checkboxes.length;
          for (i = 0; i < n; i++) {
            td = placeHolderElements.shift();
            tr.appendChild(td);
          }
          return;
        }
        // Checkboxes
        if (column === "checkboxes") {
          for (var checkbox of settings.checkboxes) {
            if (checkbox) {
              td = document.createElement("TD");
              var input = document.createElement("input");
              input.type = "checkbox";
              input.onchange = createCheckboxChangeHandler(checkbox, references, tr);
              setBomCheckboxState(checkbox, input, references);
              if (input.checked && settings.markWhenChecked == checkbox) {
                tr.classList.add("checked");
              }
              td.appendChild(input);
              tr.appendChild(td);
            }
          }
        }
        // References
        if (column === "References") {
          td = document.createElement("TD");
          td.innerHTML = highlightFilter(references.map(r => r[0]).join(", "));
          tr.appendChild(td);
        }
        // Value
        if (column === "Value") {
          td = document.createElement("TD");
          td.innerHTML = highlightFilter(bomentry[1]);
          tr.appendChild(td);
        }
        // Footprint
        if (column === "Footprint") {
          td = document.createElement("TD");
          td.innerHTML = highlightFilter(bomentry[2]);
          tr.appendChild(td);
        }
        if (column === "Qty" && settings.bommode == "grouped") {
          // Quantity
          td = document.createElement("TD");
          td.textContent = bomentry[3].length;
          tr.appendChild(td);
        }
        // Extra fields
        var i = config.extra_fields.indexOf(column)
        if (i < 0)
          return;
        td = document.createElement("TD");
        td.innerHTML = highlightFilter(bomentry[4][i]);
        tr.appendChild(td);
      });
    }
    bom.appendChild(tr);
    var handler = createRowHighlightHandler(tr.id, references, netname);
    tr.onmousemove = handler;
    highlightHandlers.push({
      id: tr.id,
      handler: handler,
    });
    if (references !== null) {
      for (var refIndex of references.map(r => r[1])) {
        footprintIndexToHandler[refIndex] = handler;
      }
    }
    if (netname !== null) {
      netsToHandler[netname] = handler;
    }
    if ((filter || reflookup) && first) {
      handler();
      first = false;
    }
  }
  EventHandler.emitEvent(
    IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, {
      filter: filter,
      reflookup: reflookup,
      checkboxes: settings.checkboxes,
      bommode: settings.bommode,
    });
}

function highlightPreviousRow() {
  if (!currentHighlightedRowId) {
    highlightHandlers[highlightHandlers.length - 1].handler();
  } else {
    if (highlightHandlers.length > 1 &&
      highlightHandlers[0].id == currentHighlightedRowId) {
      highlightHandlers[highlightHandlers.length - 1].handler();
    } else {
      for (var i = 0; i < highlightHandlers.length - 1; i++) {
        if (highlightHandlers[i + 1].id == currentHighlightedRowId) {
          highlightHandlers[i].handler();
          break;
        }
      }
    }
  }
  smoothScrollToRow(currentHighlightedRowId);
}

function highlightNextRow() {
  if (!currentHighlightedRowId) {
    highlightHandlers[0].handler();
  } else {
    if (highlightHandlers.length > 1 &&
      highlightHandlers[highlightHandlers.length - 1].id == currentHighlightedRowId) {
      highlightHandlers[0].handler();
    } else {
      for (var i = 1; i < highlightHandlers.length; i++) {
        if (highlightHandlers[i - 1].id == currentHighlightedRowId) {
          highlightHandlers[i].handler();
          break;
        }
      }
    }
  }
  smoothScrollToRow(currentHighlightedRowId);
}

function populateBomTable() {
  populateBomHeader();
  populateBomBody();
  setBomHandlers();
  resizableGrid(bomhead);
}

function footprintsClicked(footprintIndexes) {
  var lastClickedIndex = footprintIndexes.indexOf(lastClicked);
  for (var i = 1; i <= footprintIndexes.length; i++) {
    var refIndex = footprintIndexes[(lastClickedIndex + i) % footprintIndexes.length];
    if (refIndex in footprintIndexToHandler) {
      lastClicked = refIndex;
      footprintIndexToHandler[refIndex]();
      smoothScrollToRow(currentHighlightedRowId);
      break;
    }
  }
}

function netClicked(net) {
  if (net in netsToHandler) {
    netsToHandler[net]();
    smoothScrollToRow(currentHighlightedRowId);
  } else {
    clearHighlightedFootprints();
    highlightedNet = net;
    drawHighlights();
  }
}

function updateFilter(input) {
  filter = input.toLowerCase();
  populateBomTable();
}

function updateRefLookup(input) {
  reflookup = input.toLowerCase();
  populateBomTable();
}

function changeCanvasLayout(layout) {
  document.getElementById("fl-btn").classList.remove("depressed");
  document.getElementById("fb-btn").classList.remove("depressed");
  document.getElementById("bl-btn").classList.remove("depressed");
  switch (layout) {
    case 'F':
      document.getElementById("fl-btn").classList.add("depressed");
      if (settings.bomlayout != "bom-only") {
        canvassplit.collapse(1);
      }
      break;
    case 'B':
      document.getElementById("bl-btn").classList.add("depressed");
      if (settings.bomlayout != "bom-only") {
        canvassplit.collapse(0);
      }
      break;
    default:
      document.getElementById("fb-btn").classList.add("depressed");
      if (settings.bomlayout != "bom-only") {
        canvassplit.setSizes([50, 50]);
      }
  }
  settings.canvaslayout = layout;
  writeStorage("canvaslayout", layout);
  resizeAll();
  changeBomMode(settings.bommode);
}

function populateMetadata() {
  document.getElementById("title").innerHTML = pcbdata.metadata.title;
  document.getElementById("revision").innerHTML = pcbdata.metadata.revision;
  document.getElementById("company").innerHTML = pcbdata.metadata.company;
  document.getElementById("filedate").innerHTML = pcbdata.metadata.date;
  if (pcbdata.metadata.title != "") {
    document.title = pcbdata.metadata.title + " BOM";
  }
  // Calculate board stats
  var fp_f = 0,
    fp_b = 0,
    pads_f = 0,
    pads_b = 0,
    pads_th = 0;
    nets = 0;
      if ("nets" in pcbdata) {
    nets = pcbdata.nets.length;
    }
  for (var i = 0; i < pcbdata.footprints.length; i++) {
    if (pcbdata.bom.skipped.includes(i)) continue;
    var mod = pcbdata.footprints[i];
    if (mod.ref=="") continue;
    if (mod.layer == "F") {
      fp_f++;
    } else {
      fp_b++;
    }
    for (var pad of mod.pads) {
      if (pad.type == "th") {
        pads_th++;
      } else {
        if (pad.layers.includes("F")) {
          pads_f++;
        }
        if (pad.layers.includes("B")) {
          pads_b++;
        }
      }
    }
  }
  document.getElementById("stats-components-front").innerHTML = fp_f;
  document.getElementById("stats-components-back").innerHTML = fp_b;
  document.getElementById("stats-components-total").innerHTML = fp_f + fp_b;
  document.getElementById("stats-groups-front").innerHTML = pcbdata.bom.F.length;
  document.getElementById("stats-groups-back").innerHTML = pcbdata.bom.B.length;
  document.getElementById("stats-groups-total").innerHTML = pcbdata.bom.both.length;
  document.getElementById("stats-smd-pads-front").innerHTML = pads_f;
  document.getElementById("stats-smd-pads-back").innerHTML = pads_b;
  document.getElementById("stats-smd-pads-total").innerHTML = pads_f + pads_b;
  document.getElementById("stats-th-pads").innerHTML = pads_th;
  document.getElementById("stats-nets").innerHTML = nets;
  // Update version string
  document.getElementById("github-link").innerHTML = "InteractiveHtmlBom&nbsp;" +
    /^v\d+\.\d+/.exec(pcbdata.ibom_version)[0];
}

function changeBomLayout(layout) {
  document.getElementById("bom-btn").classList.remove("depressed");
  document.getElementById("lr-btn").classList.remove("depressed");
  document.getElementById("tb-btn").classList.remove("depressed");
  switch (layout) {
    case 'bom-only':
      document.getElementById("bom-btn").classList.add("depressed");
      if (bomsplit) {
        bomsplit.destroy();
        bomsplit = null;
        canvassplit.destroy();
        canvassplit = null;
      }
      document.getElementById("frontcanvas").style.display = "none";
      document.getElementById("backcanvas").style.display = "none";
      document.getElementById("bot").style.height = "";
      break;
    case 'top-bottom':
      document.getElementById("tb-btn").classList.add("depressed");
      document.getElementById("frontcanvas").style.display = "";
      document.getElementById("backcanvas").style.display = "";
      document.getElementById("bot").style.height = "calc(100% - 80px)";
      document.getElementById("bomdiv").classList.remove("split-horizontal");
      document.getElementById("canvasdiv").classList.remove("split-horizontal");
      document.getElementById("frontcanvas").classList.add("split-horizontal");
      document.getElementById("backcanvas").classList.add("split-horizontal");
      if (bomsplit) {
        bomsplit.destroy();
        bomsplit = null;
        canvassplit.destroy();
        canvassplit = null;
      }
      bomsplit = Split(['#bomdiv', '#canvasdiv'], {
        sizes: [50, 50],
        onDrag: resizeAll,
        direction: "vertical",
        gutterSize: 5
      });
      canvassplit = Split(['#frontcanvas', '#backcanvas'], {
        sizes: [50, 50],
        gutterSize: 5,
        onDrag: resizeAll
      });
      break;
    case 'left-right':
      document.getElementById("lr-btn").classList.add("depressed");
      document.getElementById("frontcanvas").style.display = "";
      document.getElementById("backcanvas").style.display = "";
      document.getElementById("bot").style.height = "calc(100% - 80px)";
      document.getElementById("bomdiv").classList.add("split-horizontal");
      document.getElementById("canvasdiv").classList.add("split-horizontal");
      document.getElementById("frontcanvas").classList.remove("split-horizontal");
      document.getElementById("backcanvas").classList.remove("split-horizontal");
      if (bomsplit) {
        bomsplit.destroy();
        bomsplit = null;
        canvassplit.destroy();
        canvassplit = null;
      }
      bomsplit = Split(['#bomdiv', '#canvasdiv'], {
        sizes: [50, 50],
        onDrag: resizeAll,
        gutterSize: 5
      });
      canvassplit = Split(['#frontcanvas', '#backcanvas'], {
        sizes: [50, 50],
        gutterSize: 5,
        direction: "vertical",
        onDrag: resizeAll
      });
  }
  settings.bomlayout = layout;
  writeStorage("bomlayout", layout);
  changeCanvasLayout(settings.canvaslayout);
}

function changeBomMode(mode) {
  document.getElementById("bom-grouped-btn").classList.remove("depressed");
  document.getElementById("bom-ungrouped-btn").classList.remove("depressed");
  document.getElementById("bom-netlist-btn").classList.remove("depressed");
  var chkbxs = document.getElementsByClassName("visibility_checkbox");

  switch (mode) {
    case 'grouped':
      document.getElementById("bom-grouped-btn").classList.add("depressed");
      for (var i = 0; i < chkbxs.length; i++) {
        chkbxs[i].disabled = false;
      }
      break;
    case 'ungrouped':
      document.getElementById("bom-ungrouped-btn").classList.add("depressed");
      for (var i = 0; i < chkbxs.length; i++) {
        chkbxs[i].disabled = false;
      }
      break;
    case 'netlist':
      document.getElementById("bom-netlist-btn").classList.add("depressed");
      for (var i = 0; i < chkbxs.length; i++) {
        chkbxs[i].disabled = true;
      }
  }

  writeStorage("bommode", mode);
  if (mode != settings.bommode) {
    settings.bommode = mode;
    bomSortFunction = null;
    currentSortColumn = null;
    currentSortOrder = null;
    clearHighlightedFootprints();
  }
  populateBomTable();
}

function focusFilterField() {
  focusInputField(document.getElementById("filter"));
}

function focusRefLookupField() {
  focusInputField(document.getElementById("reflookup"));
}

function toggleBomCheckbox(bomrowid, checkboxnum) {
  if (!bomrowid || checkboxnum > settings.checkboxes.length) {
    return;
  }
  var bomrow = document.getElementById(bomrowid);
  var checkbox = bomrow.childNodes[checkboxnum].childNodes[0];
  checkbox.checked = !checkbox.checked;
  checkbox.indeterminate = false;
  checkbox.onchange();
}

function checkBomCheckbox(bomrowid, checkboxname) {
  var checkboxnum = 0;
  while (checkboxnum < settings.checkboxes.length &&
    settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
    checkboxnum++;
  }
  if (!bomrowid || checkboxnum >= settings.checkboxes.length) {
    return;
  }
  var bomrow = document.getElementById(bomrowid);
  var checkbox = bomrow.childNodes[checkboxnum + 1].childNodes[0];
  checkbox.checked = true;
  checkbox.indeterminate = false;
  checkbox.onchange();
}

function setBomCheckboxes(value) {
  writeStorage("bomCheckboxes", value);
  settings.checkboxes = value.split(",").map((e) => e.trim()).filter((e) => e);
  prepCheckboxes();
  populateMarkWhenCheckedOptions();
  setMarkWhenChecked(settings.markWhenChecked);
}

function setMarkWhenChecked(value) {
  writeStorage("markWhenChecked", value);
  settings.markWhenChecked = value;
  markedFootprints.clear();
  for (var ref of (value ? getStoredCheckboxRefs(value) : [])) {
    markedFootprints.add(ref);
  }
  populateBomTable();
  drawHighlights();
}

function prepCheckboxes() {
  var table = document.getElementById("checkbox-stats");
  while (table.childElementCount > 1) {
    table.removeChild(table.lastChild);
  }
  if (settings.checkboxes.length) {
    table.style.display = "";
  } else {
    table.style.display = "none";
  }
  for (var checkbox of settings.checkboxes) {
    var tr = document.createElement("TR");
    var td = document.createElement("TD");
    td.innerHTML = checkbox;
    tr.appendChild(td);
    td = document.createElement("TD");
    td.id = "checkbox-stats-" + checkbox;
    var progressbar = document.createElement("div");
    progressbar.classList.add("bar");
    td.appendChild(progressbar);
    var text = document.createElement("div");
    text.classList.add("text");
    td.appendChild(text);
    tr.appendChild(td);
    table.appendChild(tr);
    updateCheckboxStats(checkbox);
  }
}

function populateMarkWhenCheckedOptions() {
  var container = document.getElementById("markWhenCheckedContainer");

  if (settings.checkboxes.length == 0) {
    container.parentElement.style.display = "none";
    return;
  }

  container.innerHTML = '';
  container.parentElement.style.display = "inline-block";

  function createOption(name, displayName) {
    var id = "markWhenChecked-" + name;

    var div = document.createElement("div");
    div.classList.add("radio-container");

    var input = document.createElement("input");
    input.type = "radio";
    input.name = "markWhenChecked";
    input.value = name;
    input.id = id;
    input.onchange = () => setMarkWhenChecked(name);
    div.appendChild(input);

    // Preserve the selected element when the checkboxes change
    if (name == settings.markWhenChecked) {
      input.checked = true;
    }

    var label = document.createElement("label");
    label.innerHTML = displayName;
    label.htmlFor = id;
    div.appendChild(label);

    container.appendChild(div);
  }
  createOption("", "None");
  for (var checkbox of settings.checkboxes) {
    createOption(checkbox, checkbox);
  }
}

function updateCheckboxStats(checkbox) {
  var checked = getStoredCheckboxRefs(checkbox).size;
  var total = pcbdata.footprints.length - pcbdata.bom.skipped.length;
  for (var i = 0; i < pcbdata.footprints.length; i++) {
    var mod = pcbdata.footprints[i];
    if (mod.ref == "") total--;
  }
  var percent = checked * 100.0 / total;
  var td = document.getElementById("checkbox-stats-" + checkbox);
  td.firstChild.style.width = percent + "%";
  td.lastChild.innerHTML = checked + "/" + total + " (" + Math.round(percent) + "%)";
}

function resetSettings ()
{
    storage.clear();
    location.reload();
}

document.onkeydown = function(e) {
  switch (e.key) {
    case "n":
      if (document.activeElement.type == "text") {
        return;
      }
      if (currentHighlightedRowId !== null) {
        checkBomCheckbox(currentHighlightedRowId, "placed");
        highlightNextRow();
        e.preventDefault();
      }
      break;
    case "ArrowUp":
      highlightPreviousRow();
      e.preventDefault();
      break;
    case "ArrowDown":
      highlightNextRow();
      e.preventDefault();
      break;
    default:
      break;
  }
  if (e.altKey) {
    switch (e.key) {
      case "f":
        focusFilterField();
        e.preventDefault();
        break;
      case "r":
        focusRefLookupField();
        e.preventDefault();
        break;
      case "z":
        changeBomLayout("bom-only");
        e.preventDefault();
        break;
      case "x":
        changeBomLayout("left-right");
        e.preventDefault();
        break;
      case "c":
        changeBomLayout("top-bottom");
        e.preventDefault();
        break;
      case "v":
        changeCanvasLayout("F");
        e.preventDefault();
        break;
      case "b":
        changeCanvasLayout("FB");
        e.preventDefault();
        break;
      case "n":
        changeCanvasLayout("B");
        e.preventDefault();
        break;
      default:
        break;
    }
    if (e.key >= '1' && e.key <= '9') {
      toggleBomCheckbox(currentHighlightedRowId, parseInt(e.key));
      e.preventDefault();
    }
  }
}

function hideNetlistButton() {
  document.getElementById("bom-ungrouped-btn").classList.remove("middle-button");
  document.getElementById("bom-ungrouped-btn").classList.add("right-most-button");
  document.getElementById("bom-netlist-btn").style.display = "none";
}

window.onload = function(e) {
  initUtils();
  initRender();
  initStorage();
  initDefaults();
  cleanGutters();
  populateMetadata();
  dbgdiv = document.getElementById("dbg");
  bom = document.getElementById("bombody");
  bomhead = document.getElementById("bomhead");
  filter = "";
  reflookup = "";
  if (!("nets" in pcbdata)) {
    hideNetlistButton();
  }
  initDone = true;
  setBomCheckboxes(document.getElementById("bomCheckboxes").value);
  // Triggers render
  changeBomLayout(settings.bomlayout);

  // Users may leave fullscreen without touching the checkbox. Uncheck.
  document.addEventListener('fullscreenchange', () => {
    if (!document.fullscreenElement)
      document.getElementById('fullscreenCheckbox').checked = false;
  });
}

window.onresize = resizeAll;
window.matchMedia("print").addListener(resizeAll);

///////////////////////////////////////////////

///////////////////////////////////////////////
EventHandler.registerCallback(IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, () => {
    for(var tr of bom.childNodes) {
        tr.onclick = tr.onmousemove;
        tr.onmousemove = null;
    };
});
///////////////////////////////////////////////
  </script>
</head>

<body>
 
<div id="topmostdiv" class="topmostdiv">
  <div id="top">
    <div style="float: right; height: 100%;">
      <div class="hideonprint menu" style="float: right; top: 8px;">
        <button class="menubtn"></button>
        <div class="menu-content">
          <label class="menu-label menu-label-top" style="width: calc(50% - 18px)">
            <input id="darkmodeCheckbox" type="checkbox" onchange="setDarkMode(this.checked)">
            Dark mode
          </label><!-- This comment eats space! All of it!
          --><label class="menu-label menu-label-top" style="width: calc(50% - 17px); border-left: 0;">
            <input id="fullscreenCheckbox" type="checkbox" onchange="setFullscreen(this.checked)">
            Full Screen
          </label>
          <label class="menu-label" style="width: calc(50% - 18px)">
            <input id="fabricationCheckbox" type="checkbox" checked onchange="fabricationVisible(this.checked)">
            Fab layer
          </label><!-- This comment eats space! All of it!
          --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
            <input id="silkscreenCheckbox" type="checkbox" checked onchange="silkscreenVisible(this.checked)">
            Silkscreen
          </label>
          <label class="menu-label" style="width: calc(50% - 18px)">
            <input id="referencesCheckbox" type="checkbox" checked onchange="referencesVisible(this.checked)">
            Designators
          </label><!-- This comment eats space! All of it!
          --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
            <input id="valuesCheckbox" type="checkbox" checked onchange="valuesVisible(this.checked)">
            Values
          </label>
          <div id="tracksAndZonesCheckboxes">
            <label class="menu-label" style="width: calc(50% - 18px)">
              <input id="tracksCheckbox" type="checkbox" checked onchange="tracksVisible(this.checked)">
              Tracks
            </label><!-- This comment eats space! All of it!
            --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
              <input id="zonesCheckbox" type="checkbox" checked onchange="zonesVisible(this.checked)">
              Zones
            </label>
          </div>
          <label class="menu-label" style="width: calc(50% - 18px)">
            <input id="padsCheckbox" type="checkbox" checked onchange="padsVisible(this.checked)">
            Pads
          </label><!-- This comment eats space! All of it!
          --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
            <input id="dnpOutlineCheckbox" type="checkbox" checked onchange="dnpOutline(this.checked)">
            DNP outlined
          </label>
          <label class="menu-label">
            <input id="highlightpin1Checkbox" type="checkbox" onchange="setHighlightPin1(this.checked)">
            Highlight first pin
          </label>
          <label class="menu-label">
            <input id="dragCheckbox" type="checkbox" checked onchange="setRedrawOnDrag(this.checked)">
            Continuous redraw on drag
          </label>
          <label class="menu-label">
            <span>Board rotation</span>
            <span style="float: right"><span id="rotationDegree">0</span>&#176;</span>
            <input id="boardRotation" type="range" min="-36" max="36" value="0" class="slider" oninput="setBoardRotation(this.value)">
          </label>
          <label class="menu-label">
            <div style="margin-left: 5px">Bom checkboxes</div>
            <input id="bomCheckboxes" class="menu-textbox" type=text
                   oninput="setBomCheckboxes(this.value)">
          </label>
          <label class="menu-label">
            <div style="margin-left: 5px">Mark when checked</div>
            <div id="markWhenCheckedContainer"></div>
          </label>
          <label class="menu-label">
            <span class="shameless-plug">
              <span>Created using</span>
              <a id="github-link" target="blank" href="https://github.com/openscopeproject/InteractiveHtmlBom">InteractiveHtmlBom</a>
            </span>
            <button class="savebtn" onclick="resetSettings()">Reset settings</button>
          </label>
        </div>
      </div>
      <div class="button-container hideonprint"
           style="float: right; position: relative; top: 8px">
        <button id="fl-btn" class="left-most-button" onclick="changeCanvasLayout('F')"
                title="Front only">F
        </button>
        <button id="fb-btn" class="middle-button" onclick="changeCanvasLayout('FB')"
                title="Front and Back">FB
        </button>
        <button id="bl-btn" class="right-most-button" onclick="changeCanvasLayout('B')"
                title="Back only">B
        </button>
      </div>
      <div class="button-container hideonprint"
           style="float: right; position: relative; top: 8px">
        <button id="bom-btn" class="left-most-button" onclick="changeBomLayout('bom-only')"
                title="BOM only"></button>
        <button id="lr-btn" class="middle-button" onclick="changeBomLayout('left-right')"
                title="BOM left, drawings right"></button>
        <button id="tb-btn" class="right-most-button" onclick="changeBomLayout('top-bottom')"
                title="BOM top, drawings bot"></button>
      </div>
      <div class="button-container hideonprint"
           style="float: right; position: relative; top: 8px">
        <button id="bom-grouped-btn" class="left-most-button" onclick="changeBomMode('grouped')"
                title="Grouped BOM"></button>
        <button id="bom-ungrouped-btn" class="middle-button" onclick="changeBomMode('ungrouped')"
                title="Ungrouped BOM"></button>
        <button id="bom-netlist-btn" class="right-most-button" onclick="changeBomMode('netlist')"
                title="Netlist"></button>
      </div>
      <div class="hideonprint menu" style="float: right; top: 8px;">
        <button class="statsbtn"></button>
        <div class="menu-content">
          <table class="stats">
            <tbody>
              <tr>
                <td width="40%">Board stats</td>
                <td>Front</td>
                <td>Back</td>
                <td>Total</td>
              </tr>
              <tr>
                <td>Components</td>
                <td id="stats-components-front">~</td>
                <td id="stats-components-back">~</td>
                <td id="stats-components-total">~</td>
              </tr>
              <tr>
                <td>Groups</td>
                <td id="stats-groups-front">~</td>
                <td id="stats-groups-back">~</td>
                <td id="stats-groups-total">~</td>
              </tr>
              <tr>
                <td>SMD pads</td>
                <td id="stats-smd-pads-front">~</td>
                <td id="stats-smd-pads-back">~</td>
                <td id="stats-smd-pads-total">~</td>
              </tr>
              <tr>
                <td>TH pads</td>
                <td colspan=3 id="stats-th-pads">~</td>
              </tr>
               <tr>
                <td>Nets</td>
                <td colspan=3 id="stats-nets">~</td>
              </tr>
            </tbody>
          </table>
          <table class="stats">
            <col width="40%"/><col />
            <tbody id="checkbox-stats">
              <tr>
                <td colspan=2 style="border-top: 0">Checkboxes</td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
      <div class="hideonprint menu" style="float: right; top: 8px;">
        <button class="iobtn"></button>
        <div class="menu-content">
          <div class="menu-label menu-label-top">
            <div style="margin-left: 5px;">Save board image</div>
            <div class="flexbox">
              <input id="render-save-width" class="menu-textbox" type="text" value="1000" placeholder="Width"
                  style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
              <span>X</span>
              <input id="render-save-height" class="menu-textbox" type="text" value="1000" placeholder="Height"
                  style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
            </div>
            <label>
              <input id="render-save-transparent" type="checkbox">
              Transparent background
            </label>
            <div class="flexbox">
              <button class="savebtn" onclick="saveImage('F')">Front</button>
              <button class="savebtn" onclick="saveImage('B')">Back</button>
            </div>
          </div>
          <div class="menu-label">
            <span style="margin-left: 5px;">Config and checkbox state</span>
            <div class="flexbox">
              <button class="savebtn" onclick="saveSettings()">Export</button>
              <button class="savebtn" onclick="loadSettings()">Import</button>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div id="fileinfodiv" style="overflow: auto;">
      <table class="fileinfo">
        <tbody>
          <tr>
            <td id="title" class="title" style="width: 70%">
              Title
            </td>
            <td id="revision" class="title" style="width: 30%">
              Revision
            </td>
          </tr>
          <tr>
            <td id="company">
              Company
            </td>
            <td id="filedate">
              Date
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
  <div id="bot" class="split" style="height: calc(100% - 80px)">
    <div id="bomdiv" class="split split-horizontal">
      <div style="width: 100%">
<!--      <div style="width: 100%; position: sticky; position: -webkit-sticky; top: 0px ; height: 60px; background-color: inherit;  z-index: 10;">-->
        <input id="reflookup" class="textbox searchbox reflookup hideonprint" type="text" placeholder="Ref lookup"
               oninput="updateRefLookup(this.value)">
        <input id="filter" class="textbox searchbox filter hideonprint" type="text" placeholder="Filter"
               oninput="updateFilter(this.value)">
        <div class="button-container hideonprint" style="float: left; margin: 0;">
          <button id="copy" title="Copy bom table to clipboard"
               onclick="copyToClipboard()"></button>
        </div>
      </div>
      <div id="dbg"></div>
      <table class="bom" id="bomtable" >
        <thead id="bomhead" style="position: sticky; position: -webkit-sticky; top: 0px;  z-index: 10">
<!--        <thead id="bomhead" style="position: sticky; position: -webkit-sticky; top: 57px; background-color: inherit; z-index: 10">-->
        </thead>
        <tbody id="bombody">
        </tbody>
      </table>
    </div>
    <div id="canvasdiv" class="split split-horizontal">
      <div id="frontcanvas" class="split" touch-action="none" style="overflow: hidden">
        <div style="position: relative; width: 100%; height: 100%;">
          <canvas id="F_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
          <canvas id="F_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
          <canvas id="F_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
          <canvas id="F_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
        </div>
      </div>
      <div id="backcanvas" class="split" touch-action="none" style="overflow: hidden">
        <div style="position: relative; width: 100%; height: 100%;">
          <canvas id="B_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
          <canvas id="B_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
          <canvas id="B_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
          <canvas id="B_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
        </div>
      </div>
    </div>
  </div>
</div>
 
</body>

</html>
